我有一个文本输入,我想让用户从中调用函数。
基本上我想将字符串绑定到函数,以便当用户键入以反斜杠开头的某个“命令”时,将调用相应的函数。
现在,例如,您可以键入/name
,后跟一个值,它将使用用户给出的值将name设置为用户对象的属性。
那么我怎么能用20个左右的'命令'呢?
jQuery的:
$('#textCommand').on('keypress', function(e) {
if(e.keyCode==13) {
sendConsole();
}
});
var user = {};
var sendConsole = function() {
value = $('#textCommand').val();
if (value.substring(0,5) === "/name") {
user.name = value.substring(6,20);
alert(user.name);
} else {
$('body').append("<span>unknown command: "+value+"</span><br />")
$('#textCommand').val("");
}
}
HTML:
<input id="textCommand" type="text"><br/>
答案 0 :(得分:2)
将您的功能存储在一个对象中,以便您可以通过键检索和调用它们:
// Store all functions here
var commands = {
name : function() {
console.log("Hello");
}
}
var sendConsole = function() {
value = $('#textCommand').val();
// Strip initial slash
if(value.substring(0,1) === '/') {
value = value.substring(1);
// If the function exists, invoke it
if(value in commands) {
commands[value](value);
}
}
}
答案 1 :(得分:1)
尝试这样的事情:
var userFunctions = {
run: function(input)
{
var parts = input.split(/\s+/);
var func = parts[0].substr(1);
var args = parts.slice(1);
this[func].call(this, args);
},
test: function(args)
{
alert(args.join(" "));
}
};
userFunctions.run("/test hello there"); // Alerts "hello there".
答案 2 :(得分:0)
你可以这样做:
if(window["functionName"])
{
window["functionName"](params);
}