我在跟随以下Javascript函数时遇到麻烦。

有很多具有ID对话和特定编号的div,例如div id =“ conversation-123”。

我需要使用对话ID将每个div内的特定表单元素作为目标。

我尝试了很多不同的代码,这就是我现在遇到的问题。

var unid = 'conversation-<?php the_ID(); ?>';
jQuery(document).ready(function ($){
  validate();
  $('#conversation-<?php the_ID(); ?> #realname').change(validate);
});

function validate(){
  var unid = 'conversation-<?php the_ID(); ?>';
  console.log(unid);
  if (jQuery("#" + unid + " #realname").val().length    >   0) {
    jQuery("#" + unid + " button#submit").prop("disabled", true);
  }
  else {
    jQuery("#" + unid + " button#submit").prop("disabled", false);
  }
}


这是我在查看页面源代码时看到的:

var unid = 'conversation-250';
jQuery(document).ready(function ($){
  validate();
  var unid = 'conversation-250'
  $("#" + unid + "#realname").change(validate);
});

function validate(){
  var unid = 'conversation-250';
  console.log(unid);
  if (jQuery("#" + unid + "#realname").val().length    >   0) {
    jQuery("#" + unid + "button#submit").prop("disabled", true);
  }
  else {
    jQuery("#" + unid + "button#submit").prop("disabled", false);
  }
}


如您所见,var unid ='conversation-250';已正确转换为div特定的数字,但在选择器函数内部,而不是会话250,我使用了“ unid”,因此它没有转换为值。它只是打印了变量名。

Firebug中的控制台显示以下内容:

conversation-213 (this is comming from console.log)
TypeError: jQuery(...).val(...) is undefined


我已经在这个问题上停留了半天...浏览了很多教程和解决方案,但没有一个对我有用。请帮忙 :)

谢谢

编辑:

你们指出,即使我通过其父级唯一ID div定位这些重复ID,也可能是重复ID的问题。

我更新了代码,现在每个ID都有相同的动态生成编号。

例如,在它是#realname之前,现在是#realname-270

        jQuery(document).ready(function ($){
      validate();
      $('#conversation-<?php the_ID(); ?> input#realname-<?php the_ID(); ?>').change(validate);
    });

    function validate(){
      if (jQuery('#conversation-<?php the_ID(); ?> input#realname-<?php the_ID(); ?>').val().length > 0) {
          //-----------
        jQuery('#conversation-<?php the_ID(); ?> button#submit-<?php the_ID(); ?>').prop("disabled", true);
      }
      else {
        jQuery('#conversation-<?php the_ID(); ?> button#submit-<?php the_ID(); ?>').prop("disabled", false);
      }
    }


当我现在查看源代码时,我确实看到生成了正确的ID,但是,该代码不起作用,并且在控制台中,我仍然看到以下错误消息:

TypeError: jQuery(...).val(...) is undefined

最佳答案

给一些空间:

if (jQuery("#" + unid + " #realname").val().length > 0) {
//----------------------^


码:

function validate() {
    var unid = 'conversation-250';
    console.log(unid);
    if (jQuery("#" + unid + " #realname").val().length > 0) {
        jQuery("#" + unid + " button#submit").prop("disabled", true);
    }
    else {
        jQuery("#" + unid + " button#submit").prop("disabled", false);
    }
}


而且我觉得您正在复制这些id,这也是错误的:


#realname
button#submit

关于javascript - 将JS var传递到选择器中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32659897/

10-11 03:49
查看更多