【问题标题】:Textbox value returns weird code instead of what's inside of it文本框值返回奇怪的代码而不是其中的内容
【发布时间】:2018-01-27 17:33:21
【问题描述】:

当我想向现有文本框添加笑脸时,我发现了一个问题。代码

	$cnt=$("#comContent").val
	
	$("#addSmiley").click(function() {
		console.log($cnt);
		$cnt = $cnt + ":)";
		console.log($cnt);
	});
#comContent {
	width: 100%;
	height: 120px;
	border: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://afeld.github.io/emoji-css/emoji.css" rel="stylesheet">

<textarea id="comContent" cols="70" rows="20"></textarea>
<i style="margin-left: 10px;overflow:visible;cursor:pointer;" id="addSmiley" class="em em-smiley"></i>

基本上我想做的是,在用户单击笑脸图标后,代码应在文本框中添加“:)”。我添加了 console.log 以查看为什么它没有添加任何内容。然后我看到了这个:

function (a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(gb,""):null==c?"":c)}}:)

我以为这将是一个简单的代码,但我不知道它有什么问题,以及为什么它不起作用

【问题讨论】:

  • 你不是在调用val函数,你只是在引用它,要在dom元素上调用val函数,你必须使用()

标签: javascript jquery textbox character add


【解决方案1】:

$cnt=$("#comContent").val();
	
	$("#addSmiley").click(function() {
		console.log($cnt);
		$cnt = $cnt + ":)";
		console.log($cnt);
	});
#comContent {
	width: 100%;
	height: 120px;
	border: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://afeld.github.io/emoji-css/emoji.css" rel="stylesheet">

<textarea id="comContent" cols="70" rows="20"></textarea>
<i style="margin-left: 10px;overflow:visible;cursor:pointer;" id="addSmiley" class="em em-smiley"></i>

将括号添加到您的 .val。比如 $cnt=$("#comContent").val();

【讨论】:

    【解决方案2】:

    问题

    • 你得到的只是函数val的引用
    $("#comContent").val // 此行获取函数 `val` 的实现

    解决办法

    • 你真正想要的是那个函数的执行,所以你需要这样调用它:$("#comContent").val()

    看这段代码sn-p:

    $cnt = $("#comContent").val();
    
    $("#addSmiley").click(function() {
      console.log($cnt);
      $cnt = $cnt + ":)";
      console.log($cnt);
    });
    #comContent {
      width: 100%;
      height: 120px;
      border: none;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <link href="https://afeld.github.io/emoji-css/emoji.css" rel="stylesheet">
    
    <textarea id="comContent" cols="70" rows="20"></textarea>
    <i style="margin-left: 10px;overflow:visible;cursor:pointer;" id="addSmiley" class="em em-smiley"></i>

    看,现在您正在调用函数 val 并获得预期值。

    【讨论】:

      猜你喜欢
      • 2019-10-02
      • 2013-11-06
      • 2016-02-29
      • 2018-02-26
      • 2021-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多