Javascript 提交前确保输入字段具有值

Javascript 提交前确保输入字段具有值,javascript,jquery,html,Javascript,Jquery,Html,我想在提交之前确保输入有值,但当我使用或“null”时,它、null不会禁用它,并且无论发生什么情况都会保持禁用状态。 这是我的密码: var prevScrollpos=window.pageYOffset; $window.scroll函数{ var currentScrollPos=window.pageYOffset; 如果prevScrollpos>currentScrollPos{ $container.fadeIn; }否则{ $container.fadeOut; } prev

我想在提交之前确保输入有值,但当我使用或“null”时,它、null不会禁用它,并且无论发生什么情况都会保持禁用状态。 这是我的密码:

var prevScrollpos=window.pageYOffset; $window.scroll函数{ var currentScrollPos=window.pageYOffset; 如果prevScrollpos>currentScrollPos{ $container.fadeIn; }否则{ $container.fadeOut; } prevScrollpos=当前ScrollPos; }; 如果document.getElementByIdm.value==null{ document.getElementByIdsend.disabled=true; }如果document.getElementByIdm.value!==空的{ document.getElementByIdsend.disabled=false; }否则{ $function{ var-socket=io; $'form'.submitfunction{ socket.emit'chat message',$'m'.val; $m.val; 返回false; }; socket.on'chat message',functionmsg{ $'messages'。追加$.textmsg; }; }; } 邮寄

您可以考虑在HTML5:< /P>中使用新的必需属性

<input id="m" autocomplete="off" required/>
有关更多信息:


这个答案就像一个替代的表单数据验证技术,因为我们有很多方法来实现表单数据验证,从基本到高级。

< P>您可以考虑在HTML5:< /P>中使用新的必需属性。
<input id="m" autocomplete="off" required/>
有关更多信息:


这个答案就像表单数据验证的另一种技术,因为我们有很多方法来实现表单数据验证,从基本到高级。

您可以使用值的长度

if (document.getElementById("m").value.length>0) concole.log('input not empty');

您可以使用值的长度

if (document.getElementById("m").value.length>0) concole.log('input not empty');

我不是Jquery专家,我不明白你为什么要使用它,但你的问题是你没有事件监听器来监听你所更改的元素。这意味着-Javascript在运行时记住元素中的值,稍后当您更改它时,如果没有合适的侦听器,它将无法读取新值。因此,它将保持禁用状态。阅读有关Jquery的更改侦听器的内容

我不是Jquery专家,我不明白您为什么要使用它,但您的问题是您没有更改元素的事件侦听器。这意味着-Javascript在运行时记住元素中的值,稍后当您更改它时,如果没有合适的侦听器,它将无法读取新值。因此,它将保持禁用状态。阅读Jquery的变更监听器,我不认为required是一个好方法,因为我只需查看html代码就可以轻松禁用它

因此,您应该做的是添加一个事件侦听器。每次用户键入内容时,您都会检查输入是否为空。如果是,则禁用按钮;如果不是,则激活按钮


还有:始终检查后端以及

我不认为required是一个好方法,因为我可以通过查看html代码轻松禁用它

因此,您应该做的是添加一个事件侦听器。每次用户键入内容时,您都会检查输入是否为空。如果是,则禁用按钮;如果不是,则激活按钮


还有:始终检查后端以及

required不是一个好的解决方案,因为您可以在浏览器控制台中打开它 我建议:

如果document.getElementByIdm.value=={ //代码在这里。。。 }

您可以查看此以了解更多信息


我希望这将帮助您

所需不是一个好的解决方案,因为您可以在浏览器控制台中打开它 我建议:

如果document.getElementByIdm.value=={ //代码在这里。。。 }

您可以查看此以了解更多信息


我希望这将帮助您

请使用if document.getElementByIdm.value==而不是您的

 <div id="msgs">
                    <ul id="messages"></ul>
                </div>
                <form action="">
                    <div id="container">
                        <input id="m" autocomplete="off" /><button id="send">Send</button>
                    </div>
                </form>
            </body>
            <script src="/socket.io/socket.io.js"></script>
            <script src="https://code.jquery.com/jquery-1.11.1.js"></script>
            <script>

                var prevScrollpos = window.pageYOffset;
                $(window).scroll(function () {
                    var currentScrollPos = window.pageYOffset;
                    if (prevScrollpos > currentScrollPos) {
                        $("#container").fadeIn();
                    } else {
                        $("#container").fadeOut();
                    }
                    prevScrollpos = currentScrollPos;

                });
    runcheck();  
    $("#m").keyup(function(){
    runcheck();
    });





    function runcheck(){
    if (document.getElementById("m").value == '') {
                    document.getElementById("send").disabled = true;
                }
                else if (document.getElementById("m").value != null) {
                    document.getElementById("send").disabled = false;
                }  else {
                    $(function () {
                        var socket = io();
                        $('form').submit(function () {
                            socket.emit('chat message', $('#m').val());
                            $("#m").val("");
                            return false;
                        });
    socket.on('chat message', function (msg) {
                    $('#messages').append($('<li>').text(msg));

                });

                    });
                }
    }


            </script>

请使用if document.getElementByIdm.value==代替您的

 <div id="msgs">
                    <ul id="messages"></ul>
                </div>
                <form action="">
                    <div id="container">
                        <input id="m" autocomplete="off" /><button id="send">Send</button>
                    </div>
                </form>
            </body>
            <script src="/socket.io/socket.io.js"></script>
            <script src="https://code.jquery.com/jquery-1.11.1.js"></script>
            <script>

                var prevScrollpos = window.pageYOffset;
                $(window).scroll(function () {
                    var currentScrollPos = window.pageYOffset;
                    if (prevScrollpos > currentScrollPos) {
                        $("#container").fadeIn();
                    } else {
                        $("#container").fadeOut();
                    }
                    prevScrollpos = currentScrollPos;

                });
    runcheck();  
    $("#m").keyup(function(){
    runcheck();
    });





    function runcheck(){
    if (document.getElementById("m").value == '') {
                    document.getElementById("send").disabled = true;
                }
                else if (document.getElementById("m").value != null) {
                    document.getElementById("send").disabled = false;
                }  else {
                    $(function () {
                        var socket = io();
                        $('form').submit(function () {
                            socket.emit('chat message', $('#m').val());
                            $("#m").val("");
                            return false;
                        });
    socket.on('chat message', function (msg) {
                    $('#messages').append($('<li>').text(msg));

                });

                    });
                }
    }


            </script>
问题 在您的示例代码中,我可以看到几个问题

似乎您没有一个侦听器来侦听输入的更改 您需要在html元素上添加一个事件侦听器,以了解是否有任何更改。请参见,然后根据您获得的事件,您可以使用event.target.value检查值。 你的价值检查是错误的 只需执行ifdocument.getElementByIdm.value不需要===null,就可以检查字段是否有值。 解决方案 只需在html元素上使用必需的属性。这将添加基本的html表单验证,并在输入为空时阻止提交。只要它在表单元素中。有关更多信息,请参阅

<input id="m" autocomplete="off" required/>
请注意,在大多数浏览器中,更改侦听器仅在焦点更改为其他元素时触发。所以你可能想检查一下keyup之类的东西。查看此处的事件:在左侧菜单的“事件”下

附言:一般来说。查看您的代码。我建议学习一些关于web开发的入门课程,特别是html+css+javascript。我想codecademy是一个很好的起点。

问题 在您的示例代码中,我可以看到几个问题

似乎您没有一个侦听器来侦听输入的更改 您需要添加一个事件侦听 在html元素上添加er,以了解是否有任何更改。请参见,然后根据您获得的事件,您可以使用event.target.value检查值。 你的价值检查是错误的 只需执行ifdocument.getElementByIdm.value不需要===null,就可以检查字段是否有值。 解决方案 只需在html元素上使用必需的属性。这将添加基本的html表单验证,并在输入为空时阻止提交。只要它在表单元素中。有关更多信息,请参阅

<input id="m" autocomplete="off" required/>
请注意,在大多数浏览器中,更改侦听器仅在焦点更改为其他元素时触发。所以你可能想检查一下keyup之类的东西。查看此处的事件:在左侧菜单的“事件”下


附言:一般来说。查看您的代码。我建议学习一些关于web开发的入门课程,特别是html+css+javascript。我想codecademy是一个很好的起点。

只需添加一个必需的输入标记!您也可以尝试这种方式。如果您正在页面上查找自定义验证,您也可以尝试这种方式。请参阅这使您能够检查所有错误值,而不是冗长的if语句。只需添加一个必需的输入标记!您也可以这样尝试。如果您正在页面上查找自定义验证,您也可以这样尝试。请参阅这使您能够检查所有错误值,而不是冗长的if语句。您还可以关闭Javascript:@DavidLavender如何为每个用户关闭Javascript?您还可以关闭Javascript:@DavidLavender如何为每个用户关闭javascript?