即使输入字段不为空,FORM也不会提交

时间:2014-09-26 07:18:33

标签: javascript php jquery forms

即使字段不为空,它也不会提交

这里有以下形式:

<form id="form" role="form" method='POST' action="user_add-post.php">
     <div class="form-group">
        <p><label class="control-label">Title</label><br />
            <input style="width: 40%" class="form-control" type="text" name="postTitle"/>
     </div>
     <div class="form-group">
        <p><label lass="control-label">Description</label><br />
           <textarea name="postDesc" cols="60" rows="10"></textarea>
     </div>
     <div class="form-group">
        <p><label>Content</label></p>
           <textarea name="postCont" cols="60" rows="10"></textarea>
     </div>
     <input type='submit' name="submit" class='btn btn-primary' value='Submit'></form>

以及我的jquery来检查输入字段是否为空:

$('#form').submit(function() {
if ($.trim($("#postTitle").val()) === "" || $.trim($("#postDesc").val()) === "" || $.trim($("#postCont").val()) === "") {
    alert('All fields required');
    return false;
}  });

现在为什么不提交?它继续说即使我已经填满了字段,所有字段都是必需的。

8 个答案:

答案 0 :(得分:2)

您错过了在输入框中添加ID

<input style="width: 40%" class="form-control" type="text" name="postTitle"/> 

将其更改为

<input style="width: 40%" class="form-control" type="text" id="postTitle" name="postTitle"/>

还有下一个文本框,请Refer

答案 1 :(得分:1)

您尚未向任何表单字段指定ID,请使用带条件的全局选择器 这是working fiddle of your task

`$("input[name=postTitle]").val()` //name selector instead of id

答案 2 :(得分:1)

您没有定义ID,因此请将条件更改为

if ($.trim($('[name="postTitle"]').val()) === "" || $.trim($('[name="postDesc"]').val()) === "" || $.trim($('[name="postCont"]').val()) === "") 

答案 3 :(得分:0)

如果情况应该是这样的:

if ($("#postTitle").val().trim() == "" || $("#postDesc").val().trim() == "" || $("#postCont").val().trim() == "") {

答案 4 :(得分:0)

如果您有任何JS错误,请参阅。此外,在各种浏览器上尝试。您没有使用ID属性,但名称是attritute,因此它可能无法在Firefox,Chrome上运行,并且可能适用于IE7及更低版本。希望这可以帮助你

答案 5 :(得分:0)

在html代码中为输入元素提供Id。

Jquery代码很好

这是正确的html代码

<input style="width: 40%" class="form-control" type="text" name="postTitle" id="postTitle"/>

答案 6 :(得分:0)

是的,就像其他人一样,如果您要使用选择器,那么您需要在表单字段中使用这些ID。或者你可以使用这样的名字:

$("[name=postTitle]").val()
$("[name=postDesc]").val()
$("[name=postCont]").val()

以下是你的jquery:

$('#form').submit(function() {
if ($("[name=postTitle]").val().trim() == "" || $("[name=postDesc]").val().trim() == "" || $("[name=postCont]").val().trim() == "") {
    alert('All fields required');
    return false;
}  });

答案 7 :(得分:0)

正如其他人所说,选择器基于ID但使用 name 属性值。因此,您可以添加ID属性,更改选择器或使用其他策略。

由于侦听器位于表单上,因此函数中的 this 引用表单,并且所有具有名称的表单控件都可用作表单的命名属性。因此,您可以使用正则表达式轻松测试值包含除空白之外的其他内容,因此请考虑:

var form = this;
var re = /^\s*$/;

if (re.test(form.postTitle.value) || re.test(form.postDesc.value) || re.test(form.postCont.value) {

  /* form is not valid */

}

比OP更有效率。

鉴于上述情况,名称为 submit 的表单控件将屏蔽表单的提交方法,因此您无法调用form.submit()或{{1} }。