0

我已经能够让我的自动保存对输入框和选择框正常工作。我正在尝试对 textareas 使用相同的过程,但它对我不起作用。我不确定是否可以使用相同的过程。我也有 tinymce 作为我的 textareas 的 htmleditor,所以我不确定这是否会导致问题。

这是我的代码示例。我在经典的 ASP 页面中执行此操作。

<textarea id="Com<%=QuesID%>" row= "1" cols= "120" name="Com<%=QuesID%>" QuesID=<%=QuesID%> wrap tabindex="21" rows="10" class="formTxt"><%=TempTxt%></textarea>

然后在页面底部:

<script>
$(document).ready(function(){
        $('select').live('change',function () {
                 var itemValue = escape($(this).val());
                var itemName = $(this).attr('name');
                var QuesID = $(this).attr('QuesID');
                var typeID = "select";
                //alert(statusVal);
                $.ajax({
                         type: "POST",
                         url: "PAFormAJAX.asp",
                         data: 'itemValue=' + itemValue + '&itemName=' + itemName + '&QuesID=' + QuesID + '&typeID=' + typeID,
                         success: function(msg) {
                             $('#autosavenotify').text(msg);
                         }
              })
          });

          $('input').live('change',function () {
                 var itemValue = escape($(this).val());
                var itemName = $(this).attr('name');
                var QuesID = $(this).attr('QuesID');
                var typeID = "input";
                //alert(statusVal);
                $.ajax({
                         type: "POST",
                         url: "PAFormAJAX.asp",
                         data: 'itemValue=' + itemValue + '&itemName=' + itemName + '&QuesID=' + QuesID + '&typeID=' + typeID,
                         success: function(msg) {
                             $('#autosavenotify').text(msg);
                         }
              })
          });

          $('textarea').live('change',function () {
                var itemValue = escape($(this).val());
                var itemName = $(this).attr('name');
                var QuesID = $(this).attr('QuesID');
                var typeID = "textarea";
                //alert(statusVal);
                $.ajax({
                         type: "POST",
                         url: "PAFormAJAX.asp",
                         data: 'itemValue=' + itemValue + '&itemName=' + itemName + '&QuesID=' + QuesID + '&typeID=' + typeID,
                         success: function(msg) {
                             $('#autosavenotify').text(msg);
                         }
              })
          });


});
</script>

输入和选择框的保存工作正常,所以我将省略 PAFormAjax.asp 代码。我可以像这样使用文本区域自动保存吗?如果没有,您对我需要更改的内容有任何提示吗?

谢谢你的帮助!

4

3 回答 3

1

尝试使用

encodeURIComponent($(this).text());

用于文本区域

于 2012-04-04T20:09:57.877 回答
1

这仅对非常旧的 jQuery 版本有效,请参阅本文末尾。

.val()仅用于输入元素,文本区域使用.text().

这是因为 jQuery 只检查元素的 value 属性,它不用于 textareas:

<textarea value="Some text here"></textarea>

那是行不通的,你必须像这样使用它:

<textarea>Some text here</textarea>

在非常旧的 jQuery 版本中,val 被简单地定义为这个,它只适用于值(从 jQuery 1.1.1 中提取):

val: function( val ) {
        return val == undefined ?
            ( this.length ? this[0].value : null ) :
            this.attr( "value", val );
    }
于 2012-04-04T20:23:14.997 回答
0

您是否有理由不选择serialize整个表格?并适当地处理处理页面?http://api.jquery.com/serialize/

$(document).on('change', function () {
  $.ajax({
    type: "POST",
    url: "PAFormAJAX.asp",
    data: $('form').serialize(),
    success: function(msg) {
        $('#autosavenotify').text(msg);
    }
  });
}, 'select, input, textarea');

我在粘贴的代码中做了一些假设 - 如果可以的话,替换你需要的并尝试使用比 $(document) 更好的选择器 - 我假设你正在使用 .live 因为你正在使用一个已经以某种方式修改。

于 2012-04-04T20:18:14.160 回答