没有获得文本输入字段的值

时间:2016-04-27 04:33:08

标签: javascript jquery

我正在尝试使用Jquery验证我的输入。与问题相关的部分代码如下。不要担心点击个人是另一种选择。但我需要在警报中获取文本值,因此当字段不为空时显示添加按钮。我无法更改由Django生成的HTML。



$(document).ready(function() {
  var rad_ind = $("label:contains('Individual')");
  var rad_com = $("label:contains('Company')");
  var co_name = $("#id_emp_coname").closest("p");
  var add_button = $("[value^='Add']");

  $("p:has(input)").hide();
  add_button.hide();


  rad_com.click(function() {
    $("p:has(input)").hide();
    co_name.show();
    co_name.change(function() {
      alert(co_name.val());
      if (co_name.val() == null || co_name.val() == "") {
        add_button.hide();
      } else {
        add_button.show();
      }
    });
  });
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<p>
  <label for="id_ind_or_company_0">Is employer an individual or company:</label>
  <ul id="id_ind_or_company">
    <li>
      <label for="id_ind_or_company_0">
        <input id="id_ind_or_company_0" name="ind_or_company" type="radio" value="True" />Individual</label>
    </li>
    <li>
      <label for="id_ind_or_company_1">
        <input id="id_ind_or_company_1" name="ind_or_company" type="radio" value="False" />Company</label>
    </li>
  </ul>
</p>
<p>
  <label for="id_emp_coname">Company Name:</label>
  <input id="id_emp_coname" maxlength="87" name="emp_coname" type="text" />
</p>
<input type="submit" value="Add" />
&#13;
&#13;
&#13;

我的问题是为什么我没有使用.val()

获取文本值

我得到空白警报。因此,添加(提交)按钮不能按预期工作。有人可以告诉我,我在哪里弄错了。

我知道有很多页面在阅读,但一直在阅读,但无法找出我在做什么错误。

谢谢,

克尚

4 个答案:

答案 0 :(得分:0)

您必须在输入上使用.val(),而不是在最近的p元素上使用。

尝试

$("#id_emp_coname").val();

我在CodePen上测试过它有效,请在代码中更改:

$(document).ready(function() {
  var rad_ind = $("label:contains('Individual')");
  var rad_com = $("label:contains('Company')");
  var co_name = $("#id_emp_coname"); //Changed here
  var add_button = $("[value^='Add']");

  $("p:has(input)").hide();
  add_button.hide();


  rad_com.click(function() {
        $("p:has(input)").hide();
        co_name.show();
        co_name.change(function() {
          alert(co_name.val());
          if (co_name.val() == null || co_name.val() == "") {
            add_button.hide();
          } else {
            add_button.show();
          }
      });
  });
});

答案 1 :(得分:0)

要获取警报值,您必须像这样使用val()

alert( $("#id_emp_coname").val());

或者你可以用另一种方式做到这一点 如果您只想在警报中显示文本框值,则只需在按钮上单击使用

 var mealPlan = Ministry.Model.extend({

    name: 'Meal Plan',
    urlRoot: '/api/mealplans',

    //--> this gets called each time fetch() builds its url
    url: function () { 
        //call the parent url()
        var url=Backbone.Model.prototype.url.call(this);
        //here you can transform the url the way you need
        url += "?code=xxxx";
        return url;
    }
 ...

确保包含jQuery。

希望它会有所帮助。

答案 2 :(得分:0)

$(document).ready(function() {
  var rad_ind = $("label:contains('Individual')");
  var rad_com = $("label:contains('Company')");
  var co_name = $("#id_emp_coname").closest("p");
  var add_button = $("[value^='Add']");

  $("p:has(input)").hide();
  add_button.hide();


  rad_com.click(function() {
    $("p:has(input)").hide();
    co_name.show();
    co_name.change(function() {
      input = co_name.find("#id_emp_coname"); // added this
      alert(input.val());
      if (input.val() == null || input.val() == "") { // changed this
        add_button.hide();
      } else {
        add_button.show();
      }
    });
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<p>
  <label for="id_ind_or_company_0">Is employer an individual or company:</label>
  <ul id="id_ind_or_company">
    <li>
      <label for="id_ind_or_company_0">
        <input id="id_ind_or_company_0" name="ind_or_company" type="radio" value="True" />Individual</label>
    </li>
    <li>
      <label for="id_ind_or_company_1">
        <input id="id_ind_or_company_1" name="ind_or_company" type="radio" value="False" />Company</label>
    </li>
  </ul>
</p>
<p>
  <label for="id_emp_coname">Company Name:</label>
  <input id="id_emp_coname" maxlength="87" name="emp_coname" type="text" />
</p>
<input type="submit" value="Add" />

我建议您使用var co_name = $("#id_emp_coname"); @leofontes提到的解决方案,如果该变量未在任何地方使用。

答案 3 :(得分:0)

目前你试图从'P'标签获取价值$(“#id_emp_coname”)。最近(“p”), 这是错误的方法。请尝试使用以下代码。

的Javascript

$(document).ready(function() {
var rad_ind = $("label:contains('Individual')");
var rad_com = $("label:contains('Company')");
var co_name = $("#id_emp_coname");
var add_button = $("[value^='Add']");

$("#pCompanyName").hide();
add_button.hide();

rad_com.click(function() {
    $("#pCompanyName").show();
    co_name.change(function() {
        // alert(co_name.val());
        console.log(co_name.val());
        if (co_name.val() == null || co_name.val() == "") {
            add_button.hide();
        } else {
            add_button.show();
        }
    });
});
rad_ind.click(function() {
    $("#pCompanyName").hide();
    co_name.val("");
    add_button.hide();
  });
});

HTML

        <p>
            <label for="id_ind_or_company_0">Is employer an individual
                or company:</label>
        <ul id="id_ind_or_company">
            <li><label for="id_ind_or_company_0"> <input
                    id="id_ind_or_company_0" name="ind_or_company" type="radio"
                    value="True" />Individual
            </label></li>
            <li><label for="id_ind_or_company_1"> <input
                    id="id_ind_or_company_1" name="ind_or_company" type="radio"
                    value="False" />Company
            </label></li>
        </ul>
        </p>
        <p id="pCompanyName">
            <label for="id_emp_coname">Company Name:</label> <input
                id="id_emp_coname" maxlength="87" name="emp_coname" type="text" />
        </p>
        <input type="submit" value="Add" />