在提交之前验证超链接和复选框

时间:2015-03-02 10:27:28

标签: javascript jquery

对于eaxmple,如果未选中复选框并且用户点击提交,我们需要显示错误消息"请选中复选框"。如果选中该复选框并且用户未点击超链接,我们需要显示错误消息"请单击链接"。 我的代码

             <script>
             var state = 0;
             $("#AcceptMe").click(function()
              {
              state=1;
             });
             if(state == 0)
              {
              alert("please click");
              }
              </script>
              </head>
               <body>
               <form>
               <a id="Link1" href="#">click</a>
               <input type="checkbox" id="AcceptMe">
               <input type="submit" name="submit">
               </form>

2 个答案:

答案 0 :(得分:0)

这不是一个好的解决方案,因为当用户点击两次时,他/她取消选中复选框,但是&#34;状态&#34;仍然是1。

检查是否选中了复选框:

var isChecked = $('#AcceptMe').is(':checked')?true:false;

现在&#34; isChecked&#34;变量将包含true或false,因此您应首先向提交按钮提供ID并键入=&#34; button&#34; (否则会尝试提交):

<input type="button" value="submit" name="submit" id="submitForm"/>

为链接添加clickHandler,如下所示:

var linkClicked = false;
$('#Link1').click(function(){
    linkClicked = true;
});

然后在该函数下,您的javascript将clickhandler添加到submitbutton:

$('#submitForm').click(function(){
    var isChecked = $('#AcceptMe').attr('checked')?true:false;
    if(isChecked){
        alert('checked!');
        if(linkClicked){
            alert('Link clicked!');
        }
        else{
            alert('Click link first!');
        }
    else{
        alert('please check the checkbox!');
    }
});

JSFiddle:http://jsfiddle.net/8o4an9xf/

请注意,您应该添加target =&#34; _blank&#34;,因为该链接将覆盖document.location。或者您可以打开要在模态窗口中显示的内容(更好)。

答案 1 :(得分:0)

我认为你必须使用“return false”

我的代码清晰简单。 如果您对内嵌代码无关紧要,请尝试以下内容:

    <body>
    <form>
        <a id="Link1" href="#" onclick="$('#Link1').addClass('visited');
            alert('add \'visited\' class to \'#Link1\'');">
        </a>
        <input type="checkbox" id="AcceptMe" />
        <input type="submit" name="submit" onclick="
            if(  $('#AcceptMe').is(':checked')){                    
                alert('checkbox is :'  + $('#AcceptMe').is(':checked'));
                if(!$('#Link1').hasClass('visited')){
                    alert('please visit link1');
                    return false;
                };   
            }else{
            return false;
            }
        " />
    </form>
</body>