Javascript 当文本框不为空或有值时禁用下拉列表

Javascript 当文本框不为空或有值时禁用下拉列表,javascript,Javascript,我有以下javascript代码,此处位置id是我UI中的一个文本框: var locationIdValue = $('[name="location_id"]').val(); var chainIdSelection = $('[name="chain_id"]').val(); if (chainIdSelection == "" && locationIdValue == "") { this.displayFailureM

我有以下javascript代码,此处位置id是我UI中的一个文本框:

         var locationIdValue = $('[name="location_id"]').val();
         var chainIdSelection = $('[name="chain_id"]').val();
 if (chainIdSelection == "" && locationIdValue == "") {
    this.displayFailureMessage("Chain # is required.", 10000);
    canSearch = false;
 }
链Id是一个下拉列表,我有以下代码:

<select class="${prefix}ChainIdSelect" name="chain_id">
    <option value=''><fmt:message key="select"/></option>
    <c:forEach var="chainId" items="${ chainDescriptionList }" >
        <option value="${chainId.chainId}"> ${chainId.chainId} - ${ chainId.description }</option>
    </c:forEach>
</select>

这是行不通的,到目前为止,我尝试过的许多其他方法也是行不通的。任何人都可以提出解决方案。

不确定您的代码是否正确,但您可能希望在事件回调中实现禁用逻辑。我想说的是添加回调,它将在每次更改
location\u id
时触发

在您的情况下,可能是这样的:

$('[name="location_id"]').change(function(){
    if(locationIdValue != "" || locationIdValue != null){
        $('[name="location_id"]').prop("disabled", true);
    }
});

请验证更改值时是否执行回调

当执行第三条语句时?在上面的代码中没有具有
id=“chain\u id”
的元素
         if(locationIdValue != "" || locationIdValue != null){
            document.getElementByName("chainid").disabled = true; 
        }
$('[name="location_id"]').change(function(){
    if(locationIdValue != "" || locationIdValue != null){
        $('[name="location_id"]').prop("disabled", true);
    }
});