0

我正在构建一个带有单选按钮的表单。

<form id="land" name="input" method="POST" action="test.php">
    <input type="radio" name="Albania" value="Albania" class="test">
    <input type="radio" name="Sweden" value="Sweden" class="test">
    <input type="radio" name="Norway" value="Norway" class="test">
    .....
    <input type="hidden" name="hidden" value="action">
    <input type="submit" value="Submit">
</form>

有超过 150 个国家可供选择。当你选择一个国家时,我正在构建的应用程序会显示一个折线图,代表相关国家的数据。我已经构建了一个脚本,以便我可以有多种选择。基本上,它会构建一个包含选定值的数组,然后从内爆数组构建一个 SQL 查询。

当我使用提交按钮发送数据时,这工作正常。但我希望图表在用户选中单选按钮时直接更新。我添加了

onClick='this.form.submit()'

到输入字段,这工作正常。

我的问题是我现在不能选择两个值,例如挪威和瑞典来比较这两个值,因为一旦我选中一个单选按钮,页面就会加载并且值消失并且单选按钮未选中。

所以。如何在值不消失的情况下发送查询?

非常感谢任何帮助!

4

3 回答 3

0
<input <?php if (!(strcmp($_POST['Albania'],"Albania"))) {echo 'checked="checked"';} ?> type="radio" name="Albania" value="Albania" class="test">
<input <?php if (!(strcmp($_POST['Sweden'],"Sweden"))) {echo 'checked="checked"';} ?> type="radio" name="Sweden" value="Sweden" class="test">
<input <?php if (!(strcmp($_POST['Norway'],"Norway"))) {echo 'checked="checked"';} ?> type="radio" name="Norway" value="Norway" class="test">

但是你为什么不使用复选框呢?也许用户要取消选中其中一个无线电输入。

我建议您将单选按钮的名称更改为:name="country[countryName]" 通过执行以下操作更容易检索所选国家/地区implode()

<input <?php if (in_array("Albania", $_POST['country'])) {echo 'checked="checked"';} ?> type="radio" name="country[Albania]" value="Albania">
<input <?php if (in_array("Sweden", $_POST['country'])) {echo 'checked="checked"';} ?> type="radio" name="country[Sweden]" value="Sweden">
<input <?php if (in_array("Norway", $_POST['country'])) {echo 'checked="checked"';} ?> type="radio" name="country[Norway]" value="Norway">

生成单选按钮:

<?php while($row = mysql_fetch_array($sth)) { ?> 
<input class="className" type="radio" name="country[<?php echo $row['land']; ?>]" value="<?php echo $row['land'];?>" onClick='this.form.submit()' <?php if (in_array($row['land'], @$_POST['country'])) {echo 'checked="checked"';} ?> /><?php echo $row['land'];?> 
<?php }?>
于 2012-08-31T13:06:09.867 回答
0

我不认为这是一个问题。这正是 HTML 和浏览器的工作方式。如果您使用 Ajax 调用而不是提交表单(并因此重新加载页面),则将保留所有选择的选项。如果您希望提交并重新加载页面以便执行您的服务器代码,您将需要创建一个或多个服务器变量来保存用户选择的选项。在 UI 中,在呈现表单和单选按钮时,您需要检查是否选择了选项并使用“checked”属性,例如:

于 2012-08-31T13:07:40.133 回答
0
<script type="text/javascript">
    $(document).ready(function ()
    {
        $('input[type="radio"]').click(function ()
        {
            var values = "";
            $('input[type="radio"]:checked').each(function ()
            {
                values = values + " - " + $(this).val();
            });
            alert(values);
            // Send your query here..
        });
    });
</script>
于 2012-08-31T13:52:58.680 回答