2011-03-16 143 views
0

似乎无法得到这个工作,由于某种原因它不会输出newdiv我的asp控制(Label1)id像我的标签存储变量内容(与html标签)标签存储<div id="test">variable content</div>(与html标签)与html标签

我也得到自动回传,甚至本书虽然它设置为false(不是很好用java/jQuery的)

<script type="text/javascript"> 
    $(function() { 
      $(document).ready(function() { 
       $('button').click(function() { 
       var x = $('textarea').val(); 
       $('textarea').val(''); 
       var label = $("#<%= Label1.ClientID %>"); 
       var newdiv = $("<div></div>").html(x).attr('id', 'test'); 
       $('#test1').append(newdiv); 
       var serializer = new XMLSerializer(); 
       label.text(serializer.serializeToString(newdiv)); 
       return false; 
      }); 
     }); 
    }); 
</script> 

<textarea style="border: 0" cols="77" rows="2">Write Something....</textarea> 
<button>Post Message</button> 
    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
<div id="test1"> 
    </div> 
</asp:Content> 

需要弄清楚如何设置ASP控制的文本,而不是标签我的jquery:

<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
+0

为什么不直接插入一个html输入按钮,而不是asp:Button,如果你点击按钮时没有执行任何服务器代码。 另外在jQuery中你不能引用一个按钮标签,它需要被“输入” – 2011-03-16 16:39:36

+0

它是一个html按钮? – 2011-03-16 16:40:17

+0

使用$(':button') – 2011-03-16 16:47:57

回答

1

在这里工作小提琴 - 你必须吨的东西你的代码错误,但我会坚持到大的东西开始。然后你可以理清小东西。 http://jsfiddle.net/mrtsherman/4BEGs/1/

$('#mybutton').click(function() { 
    //store text area value 
    var x = $('#mytextarea').val(); 
    //clear text area 
    $('#mytextarea').val(''); 
    //enter textarea value into a new div 
    var newdiv = $("<div></div>").html(x).attr('id', 'test'); 
    $('#test1').append(newdiv); 

    //Get html of newdiv, including itself 
    var html = $('<div>').append(newdiv.clone()).remove().html(); 
    //Escape the html of newdiv so that we can display it on the page 
    escapedhtml = $('<div/>').text(html).html(); 
    //Set label to be new html 
    $("#mylabel").html(escapedhtml); 
}); 

你的代码很可能导致回发,因为你已经在你的ASP标记的Runat =“服务器”。正如前面的帖子所指出的,如果你不需要它,不要使用ASP控件。只需将<input type="button" value="mybutton" />直接写入您的aspx页面,而不是依赖于asp控件。

你的代码是匿名函数,不需要。你的代码应该在$(document).ready中执行。

这是一个很好的做法,使用货币符号存储像var label = $('#label')这样的jQuery变量,所以你知道它是一个jQuery对象。 var $label = $('#label')

希望这会让你在路上。

+0

这位你说你不知道我在做什么,注释部分在底部是我试图把

textarea content
放到我的asp Label1控件中! – 2011-03-16 17:11:39

+0

http://jsfiddle.net/mrtsherman/4BEGs/2/ 这会做你想做的。 – mrtsherman 2011-03-16 18:19:01

2

您不应该在click事件处理程序中有$(document).ready调用。当你点击按钮时,你实际上正在做的是绑定。

1
<script type="text/javascript"> 
    $(document).ready(function() { 
    $('#<%= myButton.ClientID %>').click(function() { 
      var x = $('textarea').val(); 
      $('textarea').val(''); 
      var label = $("#<%= Label1.ClientID %>"); 
      var newdiv = $("<div></div>").html(x).attr('id', 'test'); 
      $('#test1').append(newdiv); 
      var serializer = new XMLSerializer(); 
      label.text(serializer.serializeToString(newdiv)); 
      return false; 
     }); 
    }); 

您应该绑定document.ready上的click事件,而不是相反。首先确保你点击按钮时调用你的函数。

你想对每个按钮点击做到这一点吗?我建议你给你的按钮,一个id和改变

$("button").click(function() { 

$('#<%= myButton.ClientID %>').click(function() { 
+0

仍然没有什么区别我回复无论如何,它仍然不会把newdiv我的标签 – 2011-03-16 16:54:42

+0

@Garrith格雷厄姆​​ - 你给你的按钮一个ID?我会用更多的细节编辑我的文章。 – Pabuc 2011-03-16 16:56:09

+0

也这只是一个测试,我会设置ID以后但现在不会输出 – 2011-03-16 16:56:37