在输入 JQuery/Javascript [关闭]

Posted

技术标签:

【中文标题】在输入 JQuery/Javascript [关闭]【英文标题】:On input JQuery/Javascript [closed] 【发布时间】:2018-01-15 19:09:48 【问题描述】:

我正在尝试对第二天的 inout 元素进行实时输入验证:

$('#new_day').on('input', function() 
  $(".days > option").each(function() 
    if ($('#new_day').val() == $("option")) 
      $('#new_day_save').prop('disabled', true);
     else 
      $('#new_day_save').prop('disabled', false);
    
  );
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select class="days">
   <option>Monday</option>
   <option>Friday</option>
</select>
<p>You have another proposition? Add it to the list.</p>
<input id="new_day" type="text" />
<input id="new_day_save" type="button" value="save new day" />

我不知道为什么它不起作用。

【问题讨论】:

没有id="day"的元素!! 请更好地解释您要达到的目标 【参考方案1】:

您可以获取option 文本数组并检查该数组是否包含输入值。

$('#new_day').on('input', function() 
  var opts = $('select option').map(function() 
    return $(this).text()
  ).get();

  $('#new_day_save').prop('disabled', opts.includes($(this).val()))
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="days">
  <option>Monday</option>
  <option>Friday</option>
</select>
<p>You have another proposition? Add it to the list.</p>
<input id="new_day" type="text" />
<input id="new_day_save" type="button" value="save new day" />

【讨论】:

【参考方案2】:

您必须在以下条件中使用当前选项文本$(this).text()

$(".days > option").each(function() 
    if( input_value == $(this).text())
        $('#new_day_save').attr('disabled', 'disabled');
    
);

注意:删除每个方法之外的禁用。

希望这会有所帮助。

$('#new_day').on('input', function()
   //Get input value
   var input_value = $(this).val(); 
   
   //Remove disabled from the button
   $('#new_day_save').removeAttr('disabled'); 
   
   //iterate through the options 
   $(".days > option").each(function() 
      //If the input value match option text the disable button
      if( input_value == $(this).text())
          $('#new_day_save').attr('disabled', 'disabled');
      
   );
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select class="days">
   <option>Monday</option>
   <option>Friday</option>
</select>
<p>You have another proposition? Add it to the list.</p>
<input id="new_day" type="text" />
<input id="new_day_save" type="button" value="save new day"/>

【讨论】:

【参考方案3】:

根据您的代码,您将$('#new_day').val()$("option") 进行比较,这将永远不会匹配,因为您无法使用$("option") 获取文本/值。

您可以使用$(this).text()$(this).val() 代替$("option"),它会起作用。

您的正确代码如下

$('#new_day').on('input', function()
   $(".days > option").each(function() 
      if($('#new_day').val() == $(this).text())
        $('#new_day_save').prop('disabled', true);
      else
        $('#new_day_save').prop('disabled', false);
      
   );
);

【讨论】:

【参考方案4】:

您的脚本应如下所示:

// start with a disabled button
$('#new_day_save').prop('disabled', true);

$('#new_day').on('input', function()
     var dayExists = false;
     // use console log or echo to debug your script
     // console.log($('#new_day').val());
     $(".days > option").each(function() 
        if($('#new_day').val() == $(this).val())
            dayExists = true;
        
     );
     //console.log(dayExists);
     $('#new_day_save').prop('disabled', !dayExists);
 );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="days">
   <option>Monday</option>
   <option>Friday</option>
</select>
<p>You have another proposition? Add it to the list.</p>
<input id="new_day" type="text" />
<input id="new_day_save" type="button" value="save new day"/>

【讨论】:

以上是关于在输入 JQuery/Javascript [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

组织 jQuery/JavaScript 代码的最佳方式(2013 年)[关闭]

jquery/javascript 在输入字段中添加文本

我可以只使用 jQuery 验证还是需要 PHP? [关闭]

jQuery裁剪一个圆圈[关闭]

在 chrome 中检查 jquery [关闭]

如何通过jQuery / Javascript获取更新的表单输入值?