jQuery填充选择框,但发布选项消失后 - javascript

我有SVG地图。当某人单击状态说“堪萨斯州”时,它会显示一个表单,并用单击状态(即堪萨斯州)填充状态选择框。代码-运行正常。此代码在头。

var itemval= '<option value="'+data.name+'">'+ stateData[data.name].fullName+'</option>';
$("#SelItem").html(itemval);

提交表单并将其回发到同一页面时,我正在使用

<form method="POST" action="theform.php" onsubmit="return  validateForm(this);">  

当页面发回到同一页面时,选择框为空。选择框在那里,但没有选项。

我在Google上进行搜索,发现下面的代码以及一些类似的方法,但是它们不起作用。我在选择的头部和下方使用了此代码,但没有运气。

var selectedVal = $("#SelItem").val();
$("#SelItem").val(selectedVal);

**HTML**
<select id="SelItem"><option></option></select>

我已经为此工作了几个小时,但似乎找不到解决方案。

有人可以告诉我在提交表单并返回同一页面后如何保留选择值吗?

参考方案

当页面加载时,您需要检查发布值的存在,如果存在,则将php值传递给javascript代码以填充选择选项,或者直接在html中使用它创建选择选项。

首先,您应该在html中给您的select一个name属性,以便将该值传递到php中的$ _POST数组中:

<select id="SelItem" name="SelItem">

这是您可以在javascript中填充它的一种方法(请注意,此代码依赖于var stateData在相同范围内):

$(document).ready(function(){
    <?php if (!empty($_POST['SelItem'])): ?>
        var posted_state = '<?php echo $_POST['SelItem'];?>';
        if (stateData[posted_state] !== undefined) {
            var itemval= '<option value="'+posted_state+'" selected>'+ stateData[posted_state].fullName+'</option>';
            $("#SelItem").html(itemval);
        }
    <?php endif; ?>
});

编辑:上面的替代方法是将其放在SELECT标签的html中:

<select id="SelItem" name="SelItem">
    <?php if (!empty($_POST['SelItem'])): ?>
        <option value="<?php echo $_POST['SelItem'];?>" selected>
            <?php echo $_POST['SelItem']; // this would be better if you can replace it with fullname ?>
        </option>
    <?php else: ?>
        <option></option>
    <?php endif; ?>
</select>

请注意,此方法在编写时有几个问题。首先,此示例中的选项文本不是状态全名,而是缩写。接下来,您不应该信任$_POST的内容,因为恶意用户可以轻松地将其更改为您不希望的值。最好在处理该帖子的php代码中验证$_POST['SelItem']的值,以确保它实际上是正确的值之一,然后再使用它。这就是为什么在上一个示例中,我在尝试将值添加到您的选择之前做了if (stateData[posted_state] !== undefined)检查的原因。

编辑:

为了从php提供状态全名,您还需要在php端定义一个状态数组(我只在客户端的javascript代码中看到它)。

所以在PHP中,如果您有类似的东西:

$states = array(
    'AK' => 'Alaska',
    'AL' => 'Alabama',
    // etc...
);

然后,您可以使用发布状态的缩写来获取全名:

if (array_key_exists($_POST['SelItem'], $states))
    $fullname = $states[$_POST['SelItem']];

用jQuery填充模式形式 - javascript

我正在将订单表从数据库绘制到datatables(jquery插件)中。我要在每笔最后一笔交易或每笔交易中增加付款。问题是,如何获取单击添加付款按钮以添加付款的行的订单ID。其次,当点击addpayment时,它会弹出一个带有字段或订单号的模态表单。我想用在td中找到的订单ID填充该字段,并使其不可编辑或隐藏,但在提交模态表单时将其发布到服务器。表格和模式表…

尽管刷新,jQuery格式仍未应用于Ajax数据 - javascript

我正在通过GET响应消息从服务器(php文件)的可折叠内部加载列表视图。但是,尽管刷新了jQuery元素,但jQuery格式并未应用于添加的HTML。我的页面在这里:http://i.cs.hku.hk/~hsbashir/Project_Work/events/events.htmlHTML代码(仅相关代码)<script> lastRecor…

JavaScript处理期间数组内部的数组 - javascript

我正在尝试使用Ajax处理表单,并且在处理复选框时遇到了问题。我以为我可以在数组中做一个数组,将选中的框添加到数据对象中,但这似乎不起作用。它不会显示为控制台中对象的一部分或类似内容。我尝试了一些变化,但没有任何效果。这是当前的样子:var formData = { 'fname' : $('input[name=fname]&…

将简单的javascript代码转换为c# - javascript

昨天我在这里问了一个问题。使用javascript和html解决方案很简单前一阵子我打算什么是操纵html来执行javascript中的任务但是我改变了主意,将javascript代码重写为c#这是输入<Abstract> <Heading>Abstract</Heading> <Para TextBreak=�…

如果复选框切换复选框已选中,则在切换div中输入必填字段 - javascript

我使用脚本用JavaScript切换了一些div。如果要选中复选框以显示toogle div,我想在toogle div中设置一些“必填”输入字段。有人能弄清楚吗?那是工作吗?function show(id) { if(document.getElementById) { var mydiv = document.getElementById(id); m…