根据使用php和javascript选择的另一个动态下拉框禁用下拉框


Disable dropdown box based on selection of another dynamic dropdown box using php and javascript

我在下拉框中有一个宽度列表。它们是动态的,因为每个产品都有不同的宽度,所以我设置了代码来寻找最小值和最大值。然后以1"为增量设置下拉列表。

宽度旁边是1/8"的增量。例如,你可以选择52 1/8。

如果最大宽度是92英寸,比如说,1/8增量下拉框应该消失或禁用,因为92是最大宽度。你不能选择92 1/8。

我该如何使1/8框消失或禁用?这是我当前下拉框代码的一部分。

<select name="width_str" id="width_str" onchange="doCalc();" style="width:50px;">
<option value="">--</option>
<?php
$counter = $minwidthRS - 1;
$start = $minwidthRS;
for($start; $start < $maxwidthRS + 1; $start++) {
$counter = $counter + 1;
echo "<option value=".$counter.">".$counter."</option>";
}
?>
</select>

当选择上面的MAXIMUM时,我想禁用或消失的带有1/8个字符的选择下拉框的代码。

<select name="widthfrac_str" id="widthfrac_str" onchange="doCalc();" style="width:50px;">
<option value="">--</option>
<option value="1/8">1/8</option>
<option value="1/4">1/4</option>    
<option value="3/8">3/8</option>
<option value="1/2">1/2</option>    
<option value="5/8">5/8</option>
<option value="3/4">3/4</option>    
<option value="7/8">7/8</option>
</select>

我知道如何使用AJAX将选定的宽度值发送到PHP页面并在那里进行比较,但在成功回调中我该发回什么?我可以发送一些东西,告诉1/8测量下拉列表的容器禁用或消失吗?

非常感谢!如果你需要更多的代码,请告诉我。doCalc()脚本基本上使用AJAX,并将宽度发送到php处理页面,以便立即更新价格。

EDIT(添加更多代码):

这是我剧本的一部分。。

<script type="text/javascript">
function doCalc(){
var roomX = $('#room_str').val();
... lots of variables set here
$.post('db_query.php',
{roomX:roomX, etc. etc. etc.}, 
function(data) {
data = $.parseJSON(data);
$('#roomname-placeholder').html(data.roomname);
// ... lots of placeholders and code here
});
return false;
};
</script>   

不确定它是否有帮助,但我学到了一些关于使用回调来更改输入字段并将其值替换为以下内容的知识:$('input[name=x_login]').val(data.loginid);

如果有这样的代码来简单地更改另一个下拉框disabled=disabled,那就太好了?这有道理吗?我还在学习编程语言!

您可以用onchange()调用另一个函数,它应该检查为第一个值选择的数字。如果是最大值,则切换函数以隐藏第二个元素。一个更简洁的解决方案是在doCalc中包含"检查最大值并在为true时切换"。

记住让PHP也检查这个值,因为如果用户选择第二个值AND,然后是第一个块的最大值,它应该隐藏第二个,但它的值可能仍然会被发送。

编辑:

<script type="text/javascript">
function doCalc(){
var roomX = $('#room_str').val();
if (roomX == <?php echo $maxwidthRS; ?>)
  {
  document.getElementById('widthfrac_str').style.display = 'none';
  // You also need to make the second element's value 0 within those brackets
  }
... lots of variables set here
$.post('db_query.php',
{roomX:roomX, etc. etc. etc.}, 
function(data) {
data = $.parseJSON(data);
$('#roomname-placeholder').html(data.roomname);
// ... lots of placeholders and code here
});
return false;
};
</script>

如果php在.php文件中,那么将php放入javascript中是没有问题的。正如OP在评论中所说的那样,效果很好!