模糊事件无法在下拉列表中

时间:2017-02-23 19:42:18

标签: javascript jquery html

我有这个小脚本,在启用“提交”按钮之前检查表单是否有效:

$('#RegisterForm input').on('keyup blur', function () { 
    if ($('#RegisterForm').valid()) 
    {                   
        EnableSubmitButton();
    } 
    else
    {
        DisableSubmitButton();
    }
});

这完美无缺,除了下拉菜单。如果它们是要完成的最后一项,则不会触发EnableSubmitButton()方法。与其他输入不同,如果您取消选择它(或者,如果是文本框,则清除内容),则DisableSubmitButton();事件不会触发。

但是,如果您尝试在未选择下拉列表的情况下提交表单,则会触发$("#RegisterForm")。validate()方法中的Required错误。

<select 
    class="form-control input-sm required error" 
    id="CountryId" 
    name="CountryId" 
    aria-required="true" 
    aria-invalid="true">
        <option value="">Country*</option>
        <option value="1">United States</option>
        ....
</select>

2 个答案:

答案 0 :(得分:0)

我改变了脚本:

$('#RegisterForm input').on('keyup blur', function () { 

对此:

$('#RegisterForm input').on('keyup blur change', function () { 

这仍然无效。但是,这确实有效:

    // and for some reason, this dropdown isn't getting captured in the method above, so it gets it's own
    $("#CountryId").change(function () {
        if ($('#RegisterForm').valid()) {
            EnableSubmitBUtton();
        } else {
            DisableSubmitButton();
        }
    });

看起来像一个愚蠢的黑客,但它完成了工作。打开其他答案。

答案 1 :(得分:0)

下拉列表应该在Form字段内,然后blur事件将起作用。