2012-07-15 70 views
1

我有一个下拉框中的宽度列表。它们是动态的,因为每个产品都有不同的宽度,所以我设置了代码来查找最小值和最大值。然后以1为增量设置下拉列表。基于使用php和javascript的另一个动态下拉框的选择来禁用下拉框

旁边的宽度是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/3/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);

如果有类似的代码来简单地更改其他下拉框禁用=禁用?那有意义吗?我仍然在学习编程术语!

回答

1

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

请记住让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在JavaScript中,如果它是一个PHP文件。它在评论中表达了OP,非常棒!

+0

我不太明白的部分是 - 我检查和比较这些数字在我的PHP页面中的AJAX发布?如果是这样,我是否在脚本的成功回调部分执行切换和隐藏效果?我将在EDIT中发布上述AJAX编码的一部分。 – LITguy 2012-07-15 07:48:39

+0

我不是一个JavaScript专家,我只知道基础知识,所以我的答案可能不准确/完整。编辑我的答案。 – 2012-07-15 07:57:55

+0

这样做!我不知道你可以在JavaScript中这样做。这开辟了一个全新的世界!非常感谢! – LITguy 2012-07-15 09:00:09

相关问题