【问题标题】:Checking Input/Type Text is empty/null with jQuery or JavaScript使用 jQuery 或 JavaScript 检查输入/类型文本是否为空/null
【发布时间】:2015-07-06 19:48:22
【问题描述】:

我被难住了。我正在尝试检查我的输入类型:文本在我的 JavaScript 中是否为空或 null。我目前有这个:

        if ($("#startDate").val().trim().length() === 0)
    {
        alert("Please fill out the required fields.");
    }

我试过了:.val() === "".val() == "".length() === 0.length() == 0.length() < 1.val().length() === 0val().trim().length() < 1.trim().length() < 1.text() === "",@98765433@4,

我的 HTML 是:

<fieldset>
<label for="startDate_[pk]" style="display:block; width:100%;text-align:left">Start Time</label>
<input type="text" name="startDate_[pk]" id="startDate_[pk]" style="width:75px;display:inline" placeholder="pick date" />
@@
<select name="startTime_[pk]" id="startTime_[pk]" style="display:inline;" disabled="disabled">
@{
var time = DateTime.Now.Date.AddHours(8);
for (int i = 480; i < 1260; i += 15)
{
<option value="@i">@DateTime.Now.Date.AddMinutes(i).ToShortTimeString()</option>
}
}
</select>
</fieldset>

我也试过这个:

        $('input[class^="dateValidate"]').each(function () {
        if($(this).val().trim().length === 0)
        {
            alert("Please fill out the required fields.");
        }

我的想法已经不多了。

****更新****

验证适用于一个选定的对象。但是当您选择多个时,验证仅适用于第一个对象。这是我的代码:

    function validate()
{
    var startDate = $('[id^="startDate"]').filter(function(){
        return $(this).val().length!==0;
    });
    var showingType = $('[id^="tShowingType"]').filter(function () {
        return $(this).val() === "";
    });
    var startTime = $('[id^="startTime"]').filter(function () {
        return $(this).val() === "";
    });
    var endTime = $('[id^="endTime"]').filter(function () {
        return $(this).val() === "";
    });

    if (startDate.length == 0 || showingType.val() === "" || startTime.val() === "" || endTime.val() === "")
    {
        alert("Please fill out the required fields.");
    }
    else
    {
        UI.goToConfirmStep();
    }

我试过了:

var startDate = $('[id^="startDate"]').filter(function(){
        return $(this).val().length!==0
var startDate = $('[id^="startDate"]').filter(function(){
        return $(this).val().length===0
startDate.length == 0
startDate.length < 0
startDate.length < 1

【问题讨论】:

  • 你也可以发布 HTML 吗?
  • 你试过的那个有什么问题?他们不工作吗?
  • 他们没有触发警报。它只是失败而没有错误。
  • 试试这个if($("#startDate").val().trim()) 这个条件应该处理假字符串(空或未定义或空)
  • 一件事:$("#startDate").val().trim().length === 0,长度不是函数,而是属性。但我想这是错字,因为你说没有错误。

标签: javascript jquery validation input


【解决方案1】:

您似乎在选择器中映射了错误的 id-startDate。在您的代码中,您有像 startDate_[pk] 这样的 ID。所以你需要一个starts with 选择器,如下所示。

 var emptyInputs= $('[id^="startDate"]').filter(function(){
     return $(this).val().length===0;
 });

if(emptyInputs.length>0){
   alert("Please fill out the required fields.");
}

Fiddle Demo

【讨论】:

  • 它命中了 3 次,因为有三个标签以 startDate 作为名称的一部分
  • 我现在无法真正更改名称,而无需更改大量其他代码。我想我可以尝试一个课程并搜索它。
  • 好的,现在它不适用于附加了不同 guid 的多个输入字段。示例:我选择一个并且验证有效。但是当我选择一个以上时,验证仅适用于第一个而不是其余的
  • @KevinFischer:再次更新。不知道这个要求:)
  • 老实说,没想到会有太大变化!现在测试它。实际上,我在测试代码中将其调整为 emptyInputs.length
【解决方案2】:

您没有正确定位 id

if(!$("#startTime_[pk]").val())

if (!$('#startTime_[pk]').val()) {
  console.log('input empty');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<input id="startTime_[pk]" type="text" value="" />

更新

[pk] 实际上会发生变化,因为它是在页面加载时加载的 guid

然后使用starts with 选择器

if(!$('[id^="startTime"]').val())

【讨论】:

  • 我也试过那个。忘记补充了。现在将添加
  • @KevinFischer,那么这意味着您的代码中还有其他事情发生。我在我的回答中查看了 sn-p,它正在工作
  • @KevinFischer,请参阅我更新的答案,您没有为给定的 html 正确定位 id
  • [pk] 实际上发生了变化,因为它是一个在页面加载时加载的 guid
  • 输入框没有任何内容时没有触发警报
【解决方案3】:

length 不是函数。这是上述代码的一个示例,通过删除 length 之后的括号来工作

 function validate() {
   if ($("#tShowingType").val() === "" || ($("#startDate").val().trim().length === 0) || ($("#startTime").val() === "") || ($("#endTime").val() === "")) { 
     alert("Please fill out the required fields."); } else { UI.goToConfirmStep();
    }
 }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<input type='text' id='startDate' />
<button onclick='validate();' >Button</button>

【讨论】:

  • 它没有触发警报,也没有触发我的 else
  • @KevinFischer 剩下的 jquery 是什么
  • ` function validate() { //if ($("#tShowingType").val() === "" || ($("#startDate").val().length === 0) || ($("#startTime").val() === "") || ($("#endTime").val() === "")) if (!$ ('[id^="startTime"]').val())// || ($("#startTime").val() === "") || ($("#endTime").val() === "")) { alert("请填写必填项。"); } 其他 { UI.goToConfirmStep(); } } ` 这是一个简单的函数。最终结果将结合其他输入字段创建一个 if 语句来验证
  • 什么时候调用验证?
  • &lt;button onclick="validate();"&gt;Click Me&lt;/button&gt;
【解决方案4】:

将条件更改为:

if(!$('[id^="startDate"]').val()){
        alert("Please fill out the required fields.");
    }

【讨论】:

    猜你喜欢
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-04
    相关资源
    最近更新 更多