2015-04-23 33 views

回答

0

下面的代码可以使用,它加载了一个表单禁用提交按钮,使其在形式的某些验证要求已得到满足:

function formValidation(oEvent) { 
    oEvent = oEvent || window.event; 
    var txtField = oEvent.target || oEvent.srcElement; 
    var t1ck = true; //Enter Text Field ID/Name in place of 't1' 
    var msg = " "; 

    if(document.getElementById("t1").value.length < 3) { 
     t1ck = false; 
     msg = msg + "Text Entered should be minimun 3 char length"; 
    } 
    //Enter Text Field ID/Name in place of 't1' 

    if(document.getElementById("s1").value.length < 1) { 
     t1ck = false; 
     msg = msg + " Select one of the options"; 
    } 
    //Enter Select Field ID/Name in place of 's1' 

    if(t1ck) { 
     document.getElementById("btnSignUp").disabled = false; 
    } 
    //Enter submit button ID/Name in place of 'btnSignUp' 
    else{ 
     document.getElementById("btnSignUp").disabled = true; 
    } 
} 
function resetForm() { 
    document.getElementById("btnSignUp").disabled = true; 
    var frmMain = document.forms[0]; 
    frmMain.reset(); 
} 
window.onload = function() { 
    var btnSignUp = document.getElementById("btnSignUp"); 
    var btnReset = document.getElementById("btnReset"); //Enter reset button ID/Name in place of 'btnReset' 

    var t1 = document.getElementById("t1"); 
    var s1 = document.getElementById("s1"); 
    var t1ck = false; 

    document.getElementById("btnSignUp").disabled = true; 
    t1.onkeyup = formValidation; 
    s1.onclick = formValidation; 
    btnReset.onclick = resetForm; 
} 
+0

你的代码没有使用[Parsley.js](http://parsleyjs.org/),它是一个带有开箱即用验证的jQuery插件。在你的情况下,你正在定义纯JavaScript的所有验证,这不是什么OP后。 –

2

我不知道你是什么意思“容易”,但你的后续可以完成。

您需要listen to the eventsparsley:form:successparsley:form:error来启用/禁用按钮。

您还需要监视每个表单字段的更改,以强制Parsley进行验证。最后,一旦你点击submit,欧芹就执行验证。由于提交被禁用,您需要手动触发验证。

所以,这里的工作示例(jsfiddle):

<form> 
    <input type="text" name="field" data-parsley-required /> 
    <button type="submit" disabled>Submit</button> 
</form> 

<script> 
$(document).ready(function() { 
    // bind Parsley to the form 
    $("form").parsley(); 

    // Whenever parsley validates successfully, we enable the submit button 
    $.listen('parsley:form:success', function(ParsleyForm) { 
     ParsleyForm.$element.find('button').prop('disabled', false); 
    }); 

    // When a validation error occurs, we disable the submit button 
    $.listen('parsley:form:error', function(ParsleyForm) { 
     ParsleyForm.$element.find('button').prop('disabled', true); 
    }); 

    // We need to monitor all form fields and force Parsley's validation manually 
    // This will result in enabling or disabling the submit button 
    $("form :input").change(function() { 
     $(this).closest('form').parsley().validate(); 
    }); 
}); 
</script> 

请注意,你需要让你监控所有字段(输入,选择,文本域等)的变化。

+0

良好的起点。我相信你也可以使用'trigger'选项(把它设置为'input'),你不需要自己调用'validate'。 –

+0

@ Marc-AndréLafortune好的。我相信你在谈论'data-parsley-trigger'?如果是这样,我只是试了一下,似乎没有工作。 [检查这个jsfiddle](http://jsfiddle.net/milz/5oLzfarn/1/)。这个字段的确认确实被触发了,但事件'parsley:form:success'和'parsley :: form:error'永远不会被触发(在JSfiddle中,你永远不会得到'alert'('success')'。 –

+0

嗯,可能的。“之前提交”的东西应该可以清理。 –

相关问题