我正在尝试使用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;
我的问题是为什么我没有使用.val()
获取文本值我得到空白警报。因此,添加(提交)按钮不能按预期工作。有人可以告诉我,我在哪里弄错了。
我知道有很多页面在阅读,但一直在阅读,但无法找出我在做什么错误。
谢谢,
克尚
答案 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" />