【问题标题】:values are empty when saving html values of a form to database将表单的 html 值保存到数据库时,值为空
【发布时间】:2013-05-23 02:10:38
【问题描述】:

我有一个表单,我想将表单的一部分和一些 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 并将其发布到我的控制器。 问题是我表单的值都是空的.. $( ".contract" ).html() 的所有值都是空的。 有什么想法吗?

【问题讨论】:

  • 你能展示你的控制器动作吗?
  • 它很大,我认为这没关系,因为从 javascript 控制台 $( ".contract" ).html() 显示空输入值。
  • 您是否要保存整个 html 而不是 input 字段中的值?
  • alert($(".contract" ).html());
  • 是的,我想保存作为表单一部分的整个合同 div。

标签: javascript jquery html asp.net-mvc forms


【解决方案1】:

我已经在小提琴中尝试过你的代码。它工作正常。我也从中获得价值

 $( ".contract" ).html();

还可以将此值设置为隐藏元素。

请在小提琴中检查这个 http://jsfiddle.net/E6DCS/1/

【讨论】:

  • @necronio 如果你面对 pbm 仍然意味着让我知道
  • 对不起,我可能无法很好地表达自己。如果我在输入字段中输入内容,这些值不会出现在警告框显示的 html 中。
  • @necronio 我了解您的问题,警报是“看到”最初呈现的 html,并且没有考虑您在输入字段中放置的值。
  • @necronio 我认为这是不可能的
  • @necronio 你可以获得邮政编码和地址值,但在那个警报中你不能指望那个值..
【解决方案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();
  }

});

【讨论】:

    【解决方案3】:

    您不应该使用隐藏字段。您可以使用隐藏的 div:

    <div id="myDiv" style="display: none;"></div>
    

    然后设置它的html:

    $( "#myDiv" ).val( $( ".contract" ).html() );
    

    此外,如果您的 DOM 中有多个带有 class="contract" 的元素,您可能会考虑使用更严格的选择器来查明实际元素。

    【讨论】:

    • 隐藏字段不是我的问题。隐藏字段用于将结果发布到我的控制器,并且工作正常。我的问题是 html 本身有空值。见:
    • 另外,我只有一个合约div。
    【解决方案4】:
    $( "#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();
     });
    

    小提琴 http://jsfiddle.net/E6DCS/2/

    【讨论】:

      猜你喜欢
      • 2011-12-30
      • 2015-06-14
      • 2018-07-20
      • 2017-04-08
      • 2019-05-13
      • 1970-01-01
      • 2016-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多