我有一个表单,我想将表单的一部分和一些html保存到我的数据库中。
<div class="contract">
<label for="Company_PostCode">Postcode</label>
<input class="postcode valid" id="Company_PostCode" name="Company.PostCode" type="text" value="">
<label for="Company_Address">Address</label>
<input class="address valid" id="Company_Address" name="Company.Address" type="text" value="">
// more form elements here
<div class="text">
some text here
</div>
</div>
我的工作是
$("#submit-button").on("click", function(e)
{
e.preventDefault();
$(".hidden-field").val($(".contract").html());
if (/* some checks here */)
{
// blah blah
}
else
{
//submit form normally
$("#form-register").submit();
}
});
所以我有一个隐藏的字段,我用它来放置我想要的html并将其发布到我的控制器。 问题是我的表格的价值都是空的.. $(“。conttract”)。html()将其所有值都清空。 有什么想法吗?
答案 0 :(得分:2)
我已经在小提琴中尝试了你的代码。它工作正常。我也从
获得了价值 $( ".contract" ).html();
还可以将此值设置为隐藏元素。
请小提琴检查一下 http://jsfiddle.net/E6DCS/1/
答案 1 :(得分:2)
好的,我想我找到了答案......
$(“。postcode”)。attr(“value”,$(“。postcode”)。val()); 必须对合同div中的每个表单元素执行此操作。所以完整的答案是......
$("#submit-button").on("click", function(e)
{
e.preventDefault();
$('.contract input').each(
function(){
$(this).attr( "value", $(this).val() );
});
$(".hidden-field").val($(".contract").html());
if (/* some checks here */)
{
// blah blah
}
else
{
//submit form normally
$("#form-register").submit();
}
});
答案 2 :(得分:1)
您不应使用隐藏字段。你可以使用一个隐藏的div:
<div id="myDiv" style="display: none;"></div>
然后设置其html:
$( "#myDiv" ).val( $( ".contract" ).html() );
此外,如果DOM中有多个带class="contract"
的元素,您可以考虑使用更严格的选择器来精确定位实际元素。
答案 3 :(得分:1)
$( "#submit-button" ).on( "click", function( e )
{
e.preventDefault();
$('.address').attr('value',$('.address').val());
$('.postcode').attr('value',$('.postcode').val());
alert($( ".contract" ).html() );
$( ".hidden-field" ).val( $( ".contract" ).html() );
$( "#form-register" ).submit();
});