【问题标题】:Set input as invalid将输入设置为无效
【发布时间】:2013-08-08 14:37:49
【问题描述】:

我有两个输入,例如

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

我想比较这些输入,如果它们匹配,则将输入设置为有效。我试过这个,但我认为prop('valid', true); 不起作用:

$(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);
        }
    });
});

我创建了一个注册表单,如果密码不同,则输入字段无效,我无法提交并显示一些提示。 ...而且我不知道如何将此输入设置为无效

【问题讨论】:

  • 当您将其标记为无效时,您是否期望某种不同的行为,或者您只是希望样式向用户表明它是无效的?
  • 您的登录框是否实际上包含一个名为#pass_hint 的显示元素? PS。您不必清空它,.html() 会为您完成。
  • 实际上,您为什么要在 JQuery 中验证用户输入?它是可操作的,用户可以轻松绕过这些规则。我建议在服务器端进行。
  • @SasankaPanguluri:是的,服务器端验证是绝对必要的。但是客户端验证也很不错,因此用户不必等待对服务器的请求就可以发现他们搞砸了。
  • 我创建了一个注册表单,如果密码不一样,输入字段无效,我不提交这个并给我一些提示。 ...而且我不知道如何将此输入设置为无效

标签: jquery validation


【解决方案1】:

HTMLInputElement interface中,没有validinvalid这样的属性。

您可以将setCustomValidity(error) 方法与本机表单验证一起使用。

至于您的脚本,这里有一个可以在所有兼容 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>

【讨论】:

  • 我认为 Chrome 是兼容 HTML 5 的浏览器,但你的小提琴不起作用
  • @SerjSagan 我刚刚在 Linux 上的 Chrome 46.0.2490.80 中对其进行了测试,它可以工作。你能详细说明什么不起作用吗?
  • 我的错。看代码的时间不够长,以至于您必须在第二个字段中至少输入一些内容才能启动验证,nm
  • 这个答案过时了吗? W3Schools has a page 在 input:invalid 属性上。
  • @PatPeter 这是一个 CSS 选择器,而不是 DOM 元素上的属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-05
  • 1970-01-01
  • 2021-02-27
  • 2021-08-31
  • 1970-01-01
  • 2018-02-15
相关资源
最近更新 更多