2017-04-27 26 views
0

這是我的網頁DIV HTML

<div class="myDiv"> 
    <h1>ASP.NET</h1> 
    <input id="Text1" type="text" value="" class="form-control" /> 
    <input id="Submit1" type="button" value="submit" onclick="check()" /> 
    <p class="lead">ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS and JavaScript.</p> 
    <p><a href="http://asp.net" class="btn btn-primary btn-lg">Learn more &raquo;</a></p> 
</div> 

在按鈕的點擊一個div,我派格HTML到我的控制器,它工作得很好,但問題是,當用戶在文本框中鍵入某些內容並單擊按鈕,則文本框中的值不會在HTML中發送。

這是我的腳本看起來像,在控制器

  function check() { 

       var formData = $('.myDiv').html(); 

       $.ajax(
       { 
        type: "POST", 
        url: "/Home/SendData", 
        data: { 
         formData: formData 
        } 

       }); 
      } 

    </script> 

釷代碼,

[HttpPost] 
     [ValidateInput(false)] 
     public JsonResult SendData(string formData) 
     { 
      return Json(""); 
     } 

我收到的HTML是

<h1>ASP.NET</h1> 
    **<input id="Text1" type="text" value="" class="form-control"></input>** 
    //here is am not getting the text enterted by user 
    <input id="Submit1" type="button" value="submit" onclick="check()"> 
    <p class="lead">ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS and JavaScript.</p> 
    <p><a href="http://asp.net" class="btn btn-primary btn-lg">Learn more »</a></p> 
+0

只是添加註意,我不想發佈數據o f我的html文本框,我希望div的整個html以及用戶在文本框中輸入的數據。 –

+0

@布賴恩是我想給整個DIV HTML –

+0

給name屬性輸入標籤 – thiru

回答

1

我有一個類似的問題,並通過設置value屬性與jQuery解決它,所以.html函數可以挑起來。是在發送數據前添加$('#Text1').attr("value", $('#Text1').val());

function check() { 

    $('#Text1').attr("value", $('#Text1').val()); 
    var formData = $('.myDiv').html(); 

    $.ajax({ 
    type: "POST", 
    url: "/Home/SendData", 
    data: { 
     formData: formData 
    } 
}); 
} 

對於多輸入,你可以添加一個類來識別它們所有(update在我的例子),並使用一個函數來改變輸入的值,例如:

<div class="myDiv"> 
    <h1>ASP.NET</h1> 
    <input id="Text1" type="text" value="" class="form-control update" /> 
    <input id="Submit1" type="button" value="submit" onclick="check()" /> 
    <p class="lead">ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS and JavaScript.</p> 
    <p><a href="http://asp.net" class="btn btn-primary btn-lg">Learn more &raquo;</a></p> 
</div> 

通知我添加了updateText1。現在,你的腳本:

$(document).ready(function() { 
    $('.update').on('change', function() { 
    $(this).attr("value", $(this).val()); 
    }); 
}); 

function check() { 
    var formData = $('.myDiv').html(); 

    $.ajax({ 
    type: "POST", 
    url: "/Home/SendData", 
    data: { 
     formData: formData 
    } 
}); 
} 

所以,現在你有一個功能改變所有的輸入,只需使用同一個類中要改變每一個輸入。

UPDATE

如果所有的投入都是一樣的div內,你可以忘掉update類,並使用這個腳本:

$(document).ready(function() { 
    $('#myDiv input[type="text"]').on('change', function() { 
    $(this).attr("value", $(this).val()); 
    }); 
}); 

你只需要在添加ID(#myDiv例如)的div:

<div class="myDiv" id="myDiv"> 
+0

我有我的網頁上多輸入。所以不能真正使用這個代碼。還有其他出路嗎? –

+0

$( '#文本1')ATTR( 「價值」,$( '#文本1')VAL()。)。這有效,但正如我所說,我的頁面上有近55個文本框,所以這將是一個真正的痛苦。我們可以做一些共同所有文本框 –

+0

@JohnyBravo檢查更新,我添加了一個可能的解決方案。 – Gerry

0

我認爲你需要html在將它發送到服務器之前對您的文本框值進行編碼。嘗試從web.config中禁用驗證請求並查看是否正確接收了文本值。

+0

這不是爲我工作 –

+0

嘗試創建文本字段一個新的屬性把它稱作「的dataField」並將其值設置爲原始值屬性。 Asp.net MVC沒有ViewState的功能,因此,我認爲形式不被其值發送,你需要做手工。 –

+0

以及這真的與asp.net無關。 即使你在瀏覽器中檢查HTML,它不包含用戶 –