重置选择列表字段

时间:2019-10-08 18:58:05

标签: javascript

我有一个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);

    } 

感谢您的帮助。

1 个答案:

答案 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?
  }
});