【问题标题】:Disable dropdown box based on selection of another dynamic dropdown box using php and javascript根据使用 php 和 javascript 选择另一个动态下拉框来禁用下拉框
【发布时间】:2012-07-15 07:22:57
【问题描述】:

我在下拉框中有一个宽度列表。它们是动态的,因为每个产品都有不同的宽度,所以我设置了代码来查找最小值和最大值。然后它会设置一个以 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>

选择的下拉框的代码为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 处理页面以便立即更新价格。

编辑(添加更多代码):

这是我的脚本的一部分..

<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);

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

【问题讨论】:

    标签: php javascript ajax drop-down-menu


    【解决方案1】:

    您可以使用 onchange() call another function,它应该检查为第一个值选择的数字。如果是最大值,则将函数切换到hide 第二个元素。一个更简洁的解决方案是在 doCalc 中包含“检查最大值并切换是否为真”。

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

    编辑:

    <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 中没有问题。它就像 cmets 中所说的 OP 一样工作,太棒了!

    【讨论】:

    • 我不太明白的部分是 - 我是否在 AJAX 发布到的 PHP 页面中检查并比较这些数字?如果是这样,我是否在脚本的成功回调部分执行切换和隐藏效果?我将在 EDIT 中发布我上面的 AJAX 编码的一部分。
    • 我不是javascript专家,我只知道基础知识,所以我的回答可能不准确/不完整。编辑我的答案。
    • 做到了!我不知道你可以在 javascript 中做这样的 php。这开启了一个全新的世界!非常感谢!
    • 我很高兴它成功了并且你学到了。您几乎可以将 php 放在任何地方。但请记住,.php 页面不会(实际上不能)进入浏览器的缓存,而 .js 文件会,如果您使用后者,则页面加载速度会更快。这通常不会破坏交易,但对于未来和/或大型 javascript 代码需要牢记。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    相关资源
    最近更新 更多