2013-08-07 19 views
8

mẫu:remove tài sản cần thiết khỏi trường nhập vào mẫu nộp

[Display(Name = "City"] 
[Required] 
[RegularExpression(@"^(?!\d$).*$"] 
[StringLength(20,MinimumLength = 2] 
public string City { get; set; } 

Mẫu:

@Html.LabelFor(x => x.City, new { @class = "control-label" }) 
@Html.TextBoxFor(x => x.City, new {id="city" }) 

Script:

<script> 
    $(document).ready(function() { 
    $("#identificationForm").submit(function (e) { 
     var required=document.getElementById("city").required; 
     console.log(required); 
     // e.preventDefault(); 
    }); 
    }); 
</script> 

Tôi muốn loại bỏ tài sản cần thiết nếu một số điều kiện được đáp ứng Không thể làm điều này theo cách này. Làm thế nào tôi có thể đạt được điều này?

+0

Với Jquery: $ ("# city"). RemoveAttr ("required"); hoặc sử dụng document.getElementById ("thành phố"). removeAttribute ('required'); – dz15

+0

Bạn đang sử dụng JqueyVal? Nếu có, loại bỏ yêu cầu không phải là điều duy nhất! – Fals

+0

có thể trùng lặp của [Làm cách nào để đặt thuộc tính bắt buộc HTML5 trong Javascript?] (Http: // stackoverflow.com/questions/18770369/how-to-set-html5-required-attribute-in-javascript) – vaxquis

Trả lời

23

JavaScript phân biệt chữ hoa chữ thường.

Sử dụng

document.getElementById("city").required = false; 

Demonstration

Hãy cẩn thận rằng mã của bạn không thể làm việc như bạn cố gắng truy cập vào các phần tử trước khi nó tồn tại. Đặt kịch bản của bạn sau khi nguyên tố này nếu bạn không thực thi mã trên một sự kiện: cũng

<input type="text" id="city" required> 
<script> 
if(somecondition is true){ 
    document.getElementById("city").required = false; 
} 
</script> 

Lưu ý rằng bạn không thể thay đổi điều này trong một hàm đệ trình và mong muốn hình thức của bạn để được nộp bởi vì nó đã quá muộn: Trình xử lý sự kiện này sẽ không được gọi nếu trường bắt buộc không được lấp đầy!

+0

Biểu mẫu vẫn chưa được gửi và tôi đang thực hiện việc này bằng chức năng gửi biểu mẫu – user2137186

+0

@ user2137186 ​​Tôi đã chỉnh sửa câu trả lời của mình để trỏ một vấn đề khác . Nó có thể có liên quan hay không, tùy thuộc vào cách mã bạn hiển thị từ những gì bạn thực sự có. –

+0

Tôi gọi hàm script trên chức năng gửi biểu mẫu – user2137186

4

Bạn shoud làm điều này:

if(somecondition is true) 
{ 
    var city = document.getElementById("city"); 
    city.removeAttribute('required'); 
} 
+0

Biểu mẫu vẫn chưa được gửi và tôi đang thực hiện việc này trong chức năng gửi biểu mẫu – user2137186

+0

Bạn nên đăng toàn bộ chức năng. – Fals

+0

ý của bạn là gì? – user2137186

9

Bạn có thể sử dụng:

document.getElementById("city").removeAttribute("required"); 

hoặc với jQuery

$('#city').removeAttr('required') 
+0

Biểu mẫu vẫn chưa được gửi và tôi đang thực hiện việc này bằng chức năng gửi biểu mẫu – user2137186

+1

Vui lòng đăng phần còn lại của mã của bạn. – j08691

+0

Tôi cũng đang sử dụng .net mvc4 ... vì vậy không nên đăng ở đây – user2137186

1

Vào thời điểm On Submit chức năng là để loại bỏ các thuộc tính cần thiết, biểu mẫu đã được thông qua xác thực. Các bước đầu tiên bạn phải vô hiệu hóa xác nhận sau đó bạn sẽ có thể gửi biểu mẫu với các trường bắt buộc trống. Tiếp theo loại bỏ các thuộc tính cần thiết và cuối cùng bằng tay gọi xác nhận thông qua $.validator.unubtrusive.parse(form) và điều này bây giờ sẽ xác nhận các hình thức bằng cách gọi các loại xác nhận khác như string lengthformatting, mọi thứ khác ngoại trừ các thuộc tính bắt buộc. Kiểm tra if form.valid() then submit() else không làm gì cả.

0

Trong php của nó rất dễ dàng, điều này sẽ không xác nhận hình thức của bạn trong khi trình,

<input type="submit" onclick="return confirm('Are you sure?')" value="Abort Test" formnovalidate> 
0

Không chắc nếu có ai đã tìm ra một cách tốt hơn để thực hiện điều này và nó có thể không phải là cách hiệu quả nhất để làm điều đó nhưng bạn có thể sử dụng PHP để thực hiện điều này. Nếu điều kiện bạn muốn gặp được biết trước khi tải trang thì bạn có thể có điều này:

<input type="text" id="city" 

<?php 
    if (condition_is_met) { 
      echo ">"; 
    } else { 
      echo "required>"; 
    } 
?> 
Các vấn đề liên quan