jquery隐藏/显示取决于复选框更改的值

时间:2014-08-19 14:53:41

标签: javascript jquery

我有一个发货/帐单表单,其中将通过javascript调用从结算信息中复制发货信息。在结算表单中,我隐藏了一些字段,并根据国家/地区的选择进行更改。到现在为止还挺好。但是,当我用国家和所有(工作)填写账单表格,然后单击复选框将信息复制到船舶表格时,它会复制信息,但它不会将其视为'变更'在船国,因此一些领域仍然隐藏。

示例:我填写国家/地区' USA',因此状态下拉列表显示所有州。我填写所有内容并点击“复制到发货表格”,这是在同一页面上。它填写了该表格的所有内容,但状态下拉列表没有显示......即使国家下拉列表中存在变化。

我的代码到目前为止(对不起,如果这只是一个hotchpotch因为我使用javascript和jquery)。

var SHIP_FNAME = "";
var SHIP_LNAME = "";
var SHIP_COMPANY = "";
var SHIP_ADDRESS1 = "";
var SHIP_ADDRESS2 = "";
var SHIP_CITY = "";
var SHIP_STATE = "";
var SHIP_ZIP = "";
var SHIP_COUNTRY = "";
var SHIP_PHONE = "";
var SHIP_CSTATE = "";

function InitSaveVariables(form) {
SHIP_FNAME = form.SHIP_FNAME.value;
SHIP_LNAME = form.SHIP_LNAME.value;
SHIP_COMPANY = form.SHIP_COMPANY.value;
SHIP_ADDRESS1 = form.SHIP_ADDRESS1.value;
SHIP_ADDRESS2 = form.SHIP_ADDRESS2.value;
SHIP_CITY = form.SHIP_CITY.value;
SHIP_ZIP = form.SHIP_ZIP.value;
SHIP_STATE = form.SHIP_STATE.value;
SHIP_COUNTRY = form.SHIP_COUNTRY.value;
SHIP_PHONE = form.SHIP_PHONE.value;
SHIP_CSTATE = form.SHIP_CSTATE.value;
}

function ShipToBillPerson(form) {
if (form.address_fillin.checked) {
InitSaveVariables(form);
form.SHIP_FNAME.value = form.BILL_FNAME.value;
form.SHIP_LNAME.value = form.BILL_LNAME.value;
form.SHIP_COMPANY.value = form.BILL_COMPANY.value;
form.SHIP_ADDRESS1.value = form.BILL_ADDRESS1.value;
form.SHIP_ADDRESS2.value = form.BILL_ADDRESS2.value;
form.SHIP_CITY.value = form.BILL_CITY.value;
form.SHIP_ZIP.value = form.BILL_ZIP.value;
form.SHIP_STATE.value = form.BILL_STATE.value;
form.SHIP_COUNTRY.value = form.BILL_COUNTRY.value;
form.SHIP_PHONE.value = form.BILL_PHONE.value;
form.SHIP_CSTATE.value = form.BILL_CSTATE.value;
} else {
form.SHIP_FNAME.value = "";
form.SHIP_LNAME.value = "";
form.SHIP_COMPANY.value = "";
form.SHIP_ADDRESS1.value = "";
form.SHIP_ADDRESS2.value = "";
form.SHIP_CITY.value = "";
form.SHIP_ZIP.value = "";
form.SHIP_STATE.value = "";
form.SHIP_COUNTRY.value = "";
form.SHIP_PHONE.value = "";
form.SHIP_CSTATE.value = "";
}
}

//结束 - >

$(document).ready(function(){
$('#BILL_COUNTRY').on('change', function() {
  if ( this.value == 'USA')
  {
    $("#statetr").show();
    $("#BILL_STATE").show();
    $("#BILL_CSTATE").hide();
  }
  else if ( this.value == 'Canada')
  {
    $("#statetr").show();
    $("#BILL_STATE").hide();
    $("#BILL_CSTATE").show();
  }
  else
  {
    $("#statetr").hide();
    $("#BILL_STATE").hide();
    $("#BILL_CSTATE").hide();
  }
});

$('#SHIP_COUNTRY').on('change', function() {
  if ( this.value == 'USA')
  {
    $("#statetr2").show();
    $("#SHIP_STATE").show();
    $("#SHIP_CSTATE").hide();
  }
  else if ( this.value == 'Canada')
  {
    $("#statetr2").show();
    $("#SHIP_STATE").hide();
    $("#SHIP_CSTATE").show();
  }
  else
  {
    $("#statetr2").hide();
    $("#SHIP_STATE").hide();
    $("#SHIP_CSTATE").hide();
  }
});
});

(ship_cstate块是加拿大国家的区块) 该代码中的复选框通过以下方式调用:

<input type="checkbox" name="address_fillin" id="address_fillin" value="Yes" OnClick="javascript:ShipToBillPerson(this.form);">

我尝试谷歌代码检查复选框,然后检查SHIP_COUNTRY的值,但无法找到任何内容。试图自己构建它,但基本上禁用了整个代码...... 我有:

$('#address_fillin').click(function(){
  if ($("#SHIP_COUNTRY").val("USA")) {
  {
    $("#statetr2").show();
    $("#SHIP_STATE").show();
    $("#SHIP_CSTATE").hide();
  } (etc... since this is basically a copy of the other function above)

1 个答案:

答案 0 :(得分:0)

尝试放

$("#SHIP_COUNTRY").trigger("change"); 

复制功能结束时。这将运行附加到#SHIP_COUNTRY的更改功能。