我有以下代码:
function mandatoryField(manF)
{
var fieldId = $(manF).val();
if(fieldId == "")
{
return false;
}
else
{
return true;
}
}
它不起作用,但确实如此:
function mandatoryField()
{
var fieldId = $("#element_1").val();
if(fieldId == "")
{
return false;
}
else
{
return true;
}
}
假设,在我的第一个例子中,mandatoryField被称为:
mandatoryField("#element_1")
当我尝试用变量替换绝对元素ID名称时,为什么它不起作用?
修改
最近的代码 - 不工作:
function isAmExSelected()
{
return $("#creditCardType").val() == "American Express";
}
function containsOnlyDigits(str)
{
return str.match(/[^0-9]/) == null;
}
function validateCCNumber()
{
var ccn = $("#creditCardNumber").val();
var onlyDigits = containsOnlyDigits(ccn);
if(isAmExSelected())
{
return ccn.length == 15 && onlyDigits;
}
else
{
return ccn.length == 16 && onlyDigits;
}
}
function mandatoryField(manF)
{
var fieldId = $("#" + manF).val();
return fieldId != "";
}
function registerValidation(id, validateMethod(), errorMethod)
{
$(id).change(function(){
if(validateMethod() == false)
{
errorMethod();
}
});
}
$(document).ready(function(){
registerValidation("#creditCardNumber", validateCCNumber, function(){alert("Invalid Credit Card Number!")});
$('input[type=text][class=mandatory]').blur(function(){
if (mandatoryField(this.id)) {
alert('Field:' + this.id + ' is mandatory!')
}
});
});
修改2
我把整个事情改写成这样:
$('input[type=text][class=mandatory]').blur(function(){
if (!($("#" + this.id).val().length)) {
alert('Field:' + this.id + ' is mandatory!');
}
});
如果强制类的文本输入模糊,则运行函数:如果#foo.val()没有长度(即没有文本),请运行警报。我相信它应该有效,但事实并非如此。
答案 0 :(得分:1)
试试这个:
function mandatoryField(manF)
{
if($('#' + manF).val() == "")
{
return false;
}
else
{
return true;
}
}
mandatoryField("element_1");
但这会让你获得元素的价值,而不是它的身份。我不确定你要完成什么。
触发场模糊选项:
$('input[type=text][class=classForMandatoryFields]').blur(function(){
if (mandatoryField(this.id)) {
alert('Field:' + this.id + ' is mandatory!')
}
});
答案 1 :(得分:1)
将代码更新为:
function mandatoryField(manF)
{
var fieldId = $("#" + manF).val();
if(fieldId == "")
{
return false;
}
else
{
return true;
}
}
然后再试一次。
答案 2 :(得分:1)
无论选择器是作为参数传入,还是直接作为$
的文字提供,两段代码都应该相同。另外,您可以执行
if..else
function mandatoryField(manF) {
var fieldId = $(manF).val();
return fieldId != "";
}
答案 3 :(得分:0)
好的,这不起作用,因为jquery会假设manF是一个DOM对象,而是你传递字符串。
你有没有试过var tr = $('#element1') //----------1
alert($(tr).val()) //------------2
tr实际上是一个dom对象
<强> UPDATE :: 强>
你为什么不尝试这个
//some code on some event
if(!check_mandatory())
//do something else
else do another thing
//some code on some event
和功能
function check_mandatory()
{
$('.mandatory').each(function{
if($(this).val() == ""){
alert($(this).attr("name") + "required");
//or you can use id or any attrib
return false;
}
})
}
注意代码可能无法运行未经测试,如果无效则请告知我
答案 4 :(得分:0)
你可以尝试一下:
var fieldId = manF.val();
mandatoryField($("element_1"));
答案 5 :(得分:0)
除了你的选择器问题,你可以像这样重写你的函数:
function mandatoryField(manF){
return $(manF).val().length;
}
这是因为在JavaScript中,一切都有真实或错误的含义。对于数字,0为假。
修改强>
我的测试工作正常:
function mandatoryField(manF){
return $(manF).val().length;
}
(...)
<input id="test" value=""/>
<input type="button" value="dd" onClick="alert('length: ' + (mandatoryField('#test'))"/>