提交

时间:2015-08-25 17:31:39

标签: javascript jquery html forms

我有以下HTML表单代码:

<div data-role="popup" id="-add" data-theme="c" class="ui-corner-all" data-dismissible="false" data-overlay-theme="a" style="min-width:550px;">
    <div data-role="content"> <a href="#" data-rel="back" data-role="button" data-icon="delete" data-iconpos="notext" style="position:absolute;top:-20px;right:-15px;">Delete</a>

        <form id="item-form" action="#" formaction="process" data-ajax="false">
            <input type="hidden" name="type" value="hidden1" />
            <input type="hidden" name="how" value="hidden2" />
            <input type="hidden" name="loc" value="hidden3" />
            <input type="hidden" name="itemtype" value="hidden4" />
            <div align="left">
                 <h3> Add</h3>

            </div>
            <div class="popup-hrule"></div>
            <div class="ui-grid-a ui-responsive">
                <div class="ui-block-a">
                    <label for="location_name">Name</label>
                    <input type="text" name="location_name" id="location_name" value="">
                </div>
                <div class="ui-block-b" data-schema="types">
                    <label for="type_name">Type</label>
                    <select name="type_name" id="type_name">
                        <option data-item=".textarea:name; .value:id; .repeat:true"></option>
                    </select>
                </div>
                <div class="ui-block-a">
                    <label for="address">Address</label>
                    <input type="text" name="address" id="address" value="">
                </div>
                <div class="ui-block-b">
                    <label for="city">City</label>
                    <input type="text" name="city" id="city" value="">
                </div>
                <div class="ui-block-a">
                    <label for="state">State</label>
                    <input type="text" name="state" id="state" value="">
                </div>
                <div class="ui-block-b">
                    <label for="zip">Postal</label>
                    <input type="number" name="zip" id="zip" value="">
                </div>
                <div class="ui-block-a">
                    <label for="_lat">Latitude</label>
                    <input type="number" name="_lat" id="_lat" value="">
                </div>
                <div class="ui-block-b">
                    <label for="_lon">Longitude</label>
                    <input type="number" name="_lon" id="_lon" value="">
                </div>
            </div> <a data-role="button" data-inline="true" onclick="$(this).closest('[data-role=popup]').popup('close');">Cancel</a>
 <a data-role="button" data-inline="true" data-theme="a" onclick="$(this).closest('form').submit();$(this).closest('form').find('input').val('');$(this).closest('[data-role=popup]').popup('close')">Add</a>

        </form>
    </div>
</div>

由于这是一个ADD表单,我想关闭表单并清除所有字段,除了顶部隐藏的字段,这些字段告诉我我要对数据做什么。当我执行代码时,它会清除表单中的所有数据,包括隐藏字段,这样第二次我就无法添加新记录。

对我来说最好的方法是完全关闭表单,这样我就不必擦除表单中的字段,当我再次尝试打开它时,它会获取新数据。

3 个答案:

答案 0 :(得分:2)

您正在清除所有 input元素:

$(this).closest('form').find('input').val('');

如果您只想清除部分内容,则需要专门针对您想要的目标。例如,如果您要清除所有非hidden input元素:

$(this).closest('form').find('input[type!="hidden"]').val('');

最糟糕的情况是,你必须将这一行代码转换成几行代码来识别你想要的元素。但只要有一些jQuery可选模式来识别你想要的模式,那就是你需要做的。

答案 1 :(得分:1)

改变这个:

 <a data-role="button" data-inline="true" data-theme="a" onclick="$(this).closest('form').submit();$(this).closest('form').find('input').val('');$(this).closest('[data-role=popup]').popup('close')">Add</a>

为此:

 <a data-role="button" data-inline="true" data-theme="a" onclick="$(this).closest('form').submit();$(this).closest('form').find('input[type!=\'hidden\']').val('');$(this).closest('[data-role=popup]').popup('close')">Add</a>

因此,您只选择那些input元素type不等于hidden

答案 2 :(得分:1)

  

对我来说最好的方法是完全关闭表格,以便我   不必删除表格中将会变得新的字段   我尝试再次打开它时的数据。

$("#item-form").remove();

如果隐藏字段是从服务器填充的,则可以重置表单,因此所有表单字段都将重置为页面重新加载时的值。

 $('#item-form')[0].reset();

简单的JS方式

document.getElementById("item-form").reset();

与OP讨论后更新

<a href="javascript:resetForm()">Cancel</a>

function resetForm() { 
   $('#item-form')[0].reset(); 
   $(this).closest('[data-role=popup]').popup(‌​'close'); 
}