2013-08-08 39 views
17

Tôi có hai yếu tố đầu vào, ví dụ:Đặt đầu vào là không hợp lệ

pass:  <input type="password" name="pass" required/> 
pass again: <input type="password" name="pass2" required/> 

và tôi muốn so sánh các đầu vào này và nếu chúng khớp, hãy đặt đầu vào là hợp lệ. Tôi cố gắng này, nhưng tôi nghĩ rằng prop('valid', true); không hoạt động:

$(document).ready(function() { 
    $('input[name=pass2]').keyup(function() { 
     if($('input[name=pass]').val() == $('input[name=pass2]').val()) { 
      $('#pass_hint').empty(); 
      $('#pass_hint').html('match'); 
      $(this).prop('valid', true); 
     } else { 
      $('#pass_hint').empty(); 
      $('#pass_hint').html('mismatch'); 
      $(this).prop('invalid', true); 
     } 
    }); 
}); 

tôi tạo ra một mẫu đăng ký và nếu mật khẩu là không giống nhau, lĩnh vực đầu vào là không hợp lệ và tôi không thể nộp này và chỉ cho tôi một số gợi ý. ... và tôi không biết cách tôi đặt đầu vào này là không hợp lệ

+0

Bạn có mong đợi một số loại hành vi khác nhau khi bạn đánh dấu nó là không hợp lệ, hoặc làm bạn chỉ mong đợi phong cách để chỉ ra cho người dùng rằng nó không hợp lệ? – Travesty3

+0

Hộp đăng nhập của bạn có thực sự bao gồm phần tử được hiển thị có tên là '# pass_hint' không? PS. bạn không cần phải làm trống nó, '.html()' làm điều đó cho bạn. – DevlshOne

+1

Thực ra, tại sao bạn xác thực tính năng nhập của người dùng trong JQuery? Nó có thể thao túng và người dùng sẽ dễ dàng bỏ qua các quy tắc này. Tôi khuyên bạn nên làm điều đó ở phía máy chủ. –

Trả lời

24

Trong HTMLInputElement interface, không có bất động sản nào như valid hoặc invalid.

Bạn có thể sử dụng phương thức setCustomValidity(error) với xác thực biểu mẫu gốc.

Đối với kịch bản của bạn, đây là một bản demo nên hoạt động trong tất cả các trình duyệt tương thích HTML5:

$('input[name=pass2]').keyup(function() { 
 
    'use strict'; 
 

 
    if ($('input[name=pass]').val() === $(this).val()) { 
 
     $('#pass_hint').html('match'); 
 
     this.setCustomValidity(''); 
 
    } else { 
 
     $('#pass_hint').html('mismatch'); 
 
     this.setCustomValidity('Passwords must match'); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form action='#'> 
 
    <p>Password: 
 
     <input name=pass type=password required> 
 
    </p> 
 
    <p>Verify: 
 
     <input name=pass2 type=password required> 
 
    </p> 
 
    <p id=pass_hint></p> 
 
    <button type=submit>Submit</button> 
 
</form>

+1

Tôi cho rằng Chrome là trình duyệt Tương thích HTML 5, nhưng fiddle của bạn không hoạt động –

+0

@SerjSagan Tôi vừa thử nghiệm trong Chrome 46.0.2490.80 trên Linux và nó hoạt động. Bạn có thể giải thích về những gì không hoạt động không? –

+0

Tệ của tôi. Đã không nhìn vào mã đủ lâu để thấy rằng bạn phải gõ ít nhất một cái gì đó trong lĩnh vực thứ hai để xác nhận để kick in, nm –

Các vấn đề liên quan