【问题标题】:Disable button until form field is empty but the button is outside form禁用按钮,直到表单字段为空但按钮在表单之外
【发布时间】:2016-06-15 05:41:54
【问题描述】:

嗨,我正在WordPress 中创建一个popup plugin,我想在其中禁用我的按钮,该按钮在表单禁用之前,直到我的表单字段为空。我没有使用提交按钮,因为单击提交按钮后它会重新加载我不想这样做的页面,我只是希望它关闭所以我使用button 而不是type="submit"

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="memberModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <a class="close" data-dismiss="modal">×</a>
                <h3>Modal header</h3>
            </div>
            <div class="modal-body">
                <form method="post" action="" name="sf-popup" id="sf-popup">

                    <input type="text" name="sfname" placeholder="Name" class="col-xs-12 col-md-6 sfname">
                    <input type="tel" name="sfphone" placeholder="Phone Number" class="col-xs-12 col-md-offset-1 col-md-5 sfphone">
                    <textarea name="message" placeholder="Enter Your Query" class="col-md-12"></textarea>
                </form>

            </div>
            <div class="modal-footer">
                <button id="sfpsubmit" class="btn btn-primary sfp_btn" name="submit">Submit</button>

            </div>
        </div>
    </div>

    <script>
        $("#sf-popup .sfname").keyup(function() {
            alert("hmmm");
            /* if($(this).val() == '' && $( "#sf-popup .sfphone").val() == ''){
            $('#sfpsubmit').attr('disabled','disabled');
        } else{
            $('#sfpsubmit').removeAttr('disabled');
        } */
        });
        $("#sf-popup .sfphone").keyup(function() {
            if ($(this).val() == '' && $("#sf-popup .sfname").val() == '') {
                $('#sfpsubmit').attr('disabled', 'disabled');
            } else {
                $('#sfpsubmit').removeAttr('disabled');
            }
        });
    </script>

</div>

我尝试了很多 javascript 方法,但都不适合我

工作代码 这段代码现在对我有用,谢谢你的帮助 Prakash Rao

jQuery(document).ready(function($) {
    setTimeout(function(){
            $('#myModal').modal('show');
        }, 3000);


        $( "#sf-popup .sfname" ).keyup(function() {
          if($(this).val() == '' || $( "#sf-popup .sfphone").val() == ''){
                $('#sfpsubmit').attr('disabled','disabled');

            } else{
                $('#sfpsubmit').removeAttr('disabled');
                $( ".sfp_btn" ).click(function() {
                    $('#myModal').modal('hide');
                });
            }
        });

        $( "#sf-popup .sfphone" ).keyup(function() {
            var sfp_phone = $(this).val();
            if(sfp_phone.length > 10){

                $(this).val(sfp_phone.substr(0,10));
                $('#sfpsubmit').removeAttr('disabled');
            }
                if(sfp_phone == '' || $( "#sf-popup .sfname").val() == '' || $.isNumeric(sfp_phone) == false ||sfp_phone.length < 10){
                $('#sfpsubmit').attr('disabled','disabled');

            } else{
                $('#sfpsubmit').removeAttr('disabled');
                $( ".sfp_btn" ).click(function() {
                    $('#myModal').modal('hide');
                });
            }
            });


    });

【问题讨论】:

  • 看看this。答案有很多方法
  • 我已经检查过了,但是在这个提交按钮是在表单内,而按钮是在我的问题中已经提到的表单之外
  • 您可以通过preventDefault()preventDefault()在表单中单击提交按钮时禁用页面刷新

标签: javascript jquery html wordpress forms


【解决方案1】:

尝试jquery的keyup事件,每次用户在输入框中输入时都会检查

为输入框“sfphone”和“sfname”提供类

<input type="text" name="sfname" placeholder="Name" class="col-xs-12 col-md-6  sfname">
<input type="tel" name="sfphone" placeholder="Phone Number" class="col-xs-12 col-md-offset-1 col-md-5 sfphone">

确保提交按钮的 id 为 id="submit" 不是 2 次 在这个页面中,所有的 ID 也应该是一次

例如:用于姓名输入

$( "#sf-popup .sfname" ).keyup(function() {
  if($(this).val() == '' && $( "#sf-popup .sfphone").val() == ''){
    $('#submit').attr('disabled','disabled');
} else{
    $('#submit').removeAttr('disabled');
}
});

电话输入也是如此

$( "#sf-popup .sfphone" ).keyup(function() {
  if($(this).val() == '' && $( "#sf-popup .sfname").val() == ''){
    $('#submit').attr('disabled','disabled');
} else{
    $('#submit').removeAttr('disabled');
}
});

【讨论】:

  • 并且点应该是我认为在 removeAttr 之前的一个
  • 没有问题,但按钮未禁用
  • 好的,尝试将这个用脚本标签包裹的 j​​query 代码粘贴到弹出表单下方。即在 结束之后
  • 我还在 jquery 第 1 和第 2 块中的 sfphone 和 sfname 上加了点
  • 好吧,让我试试这个
猜你喜欢
  • 1970-01-01
  • 2020-11-12
  • 2020-03-14
  • 2014-10-28
  • 1970-01-01
  • 1970-01-01
  • 2021-05-11
  • 2018-01-22
  • 1970-01-01
相关资源
最近更新 更多