我有一个Web表单,其中包含一个名为jrole的选择列表字段,该列表已隐藏。基于在另一个称为custtype的字段中选择的某个值,该字段不会被隐藏。问题是领域jrole用于各种组合。我要做的是确保每次选择控制字段(客户类型)时,为jrole选择的默认值都返回到Select One。
我看过其他公开帖子,但找不到有效的解决方案。这是我到目前为止的代码。
$('#custtype').change(function()
var defaultValue = $("#jrole").val("");
var value = this.value;
else if (value == 'Electrical Contractor (Service)') {
$('#jroleli').removeClass('MMM--isVisuallyHidden');
$('#mktsegli').addClass('MMM--isVisuallyHidden');
$('#checkbox-needed-error-job').removeClass('MMM--isVisuallyHidden');
$('#checkbox-needed-error-mkt').addClass('MMM--isVisuallyHidden');
//应该将jrole重置为value =“”-不起作用 $(“#jrole”)。val(defaultValue);
}
感谢您的帮助。
答案 0 :(得分:0)
据我所知,您似乎已经省略了许多必要的括号“ {}”。声明函数时,它应如下所示:
function(...) {
...
}
接下来,如果不正确,则if语句以else开头。 if语句的正确格式如下。
// Case 1: one if statement
if(condition) {
...
}
// Case 2: an if else statement
if(condition) {
...
} else {
...
}
// Case 3: else if statements
if(condition1) {
...
} else if (condition2) {
...
} else {
...
}
接下来,在大多数情况下,您应该使用'==='而不是'==',因为这是大多数人期望平等行为的方式。单击此处以查看有关每个用例的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness
最后,您没有在更改功能上关闭右括号。
因此,考虑到这一点,我将自由地以您认为要键入的方式重新格式化您的代码:
$('#custtype').change(function() {
var defaultValue = $("#jrole").val("");
var value = this.value;
if (value === 'Electrical Contractor (Service)') {
$('#jroleli').removeClass('MMM--isVisuallyHidden');
$('#mktsegli').addClass('MMM--isVisuallyHidden');
$('#checkbox-needed-error-job').removeClass('MMM--isVisuallyHidden');
$('#checkbox-needed-error-mkt').addClass('MMM--isVisuallyHidden');
// $("#jrole").val(defaultValue);
}
});
根据您的要求,我相信您将在使用“ console.log”调试您要尝试的操作时获得很多帮助。需要注意的是,默认值开始设置为您的jrole分配了值“”。也许您的意思是使用以下行来获取默认值?
var defaultValue = $("#jrole").val(); // retrieve the value from jrole
最后,如果您只想重置jrole的值,则下面的行将按预期工作。
$("#jrole").val(""); // Sets the value to ""
但是,由于您没有解释“选择一个”的含义,因此我不确定如何解决您要问的问题,但是我相信这些打印声明应该使您对预期的事情走上正确的道路。考虑以下代码进行调试。
$('#custtype').change(function() {
console.log("inside custtype change function"); // does this function ever execute?
//var defaultValue = $("#jrole").val(""); // by passing in "", you are resetting jrole here, do you need to reset it again down below?
//console.log(defaultValue); // is this the value you want?
var defaultValue = ""; // placing this here to be the default value you likely expected
var value = this.value;
console.log(value) // is this the value you are expecting?
if (value === 'Electrical Contractor (Service)') {
console.log('inside if statement'); // did you aim to be inside this if statement?
$('#jroleli').removeClass('MMM--isVisuallyHidden');
$('#mktsegli').addClass('MMM--isVisuallyHidden');
$('#checkbox-needed-error-job').removeClass('MMM--isVisuallyHidden');
$('#checkbox-needed-error-mkt').addClass('MMM--isVisuallyHidden');
//should reset jrole to value = "" - not working
$("#jrole").val(defaultValue); // this will set the value of jrole to default value
} else {
console.log('inside else statement'); // do you need logic if it isn't true?
}
});