在javascript文件中使用javascript编写javascript代码

在javascript文件中使用javascript编写javascript代码,javascript,Javascript,这可能是一个愚蠢的问题,但让我问一下。我想将一个对象或代码段作为字符串分配给一个变量,然后将其作为代码使用 code_string = "rules:{hotel_name:{required: true, lettersonly: true}}"; var validator = $('#create_hotels').validate({ print code_string; // How will I call code_string here to act as be

这可能是一个愚蠢的问题,但让我问一下。我想将一个对象或代码段作为字符串分配给一个变量,然后将其作为代码使用

code_string = "rules:{hotel_name:{required: true, lettersonly: true}}";

var validator = $('#create_hotels').validate({
    print code_string;
    //  How will I call code_string here to act as below ?
});

// want it working like this

var validator = $('#create_hotels').validate({
    rules:{hotel_name:{required: true, lettersonly: true}},
});

只需做一个很小的更改,就可以将字符串解析为javascript对象

更改是将{和}包含在字符串中,但也将字符串格式化为有效的json,其中包括在中包装键

现在您可以使用JSON.parse:


简化,但应该很容易扩展

像这样的怎么样

const isValid = {
    name: str => str.length > 3,
    age: int => {
        const MIN_AGE = 18;
        const MAX_AGE = 65;
        if(isNaN(int)){
            return false;
        }
        return age >= MIN_AGE && age <= MAX_AGE;
    }
}

const john = { name: 'John', age: 21 };
const sarah = { name: '', age: 99 };

isValid['name'](john.name); // true
isValid['age'](john.age); // true

isValid['name'](sarah.name); // false
isValid['age'](sarah.age); // false


在创建字符串时遵循json的语法。。。然后在需要的地方将其转换为json

为什么不使用json.stringify和json.parse?您并不是在传递代码,而是在传递信息。为什么不直接存储为对象呢?const rules={hotel_name:{required:true,lettersonly:true}}}….$'create_hotels.validaterulesI更新了我的问题,请给我一个工作示例。这个答案让我困惑-这和问题有什么关系?!我有submitHandler和error元素,以及它是如何工作的them@mohsin自发布此答案后,您已更改了问题。您最好将其还原,以免使此答案和其他答案无效,并提出另一个问题。但简而言之,提交处理程序的字符串版本将出现问题。不是不可能,但可以提出一个安全问题。我回复我的问题,但如果你能给我看一个submitHandler的例子,我会的great@mohsin您可以将字符串传递给函数的构造函数并执行它。这真是个坏主意。它是伪装的。请看:实际上我有很多表单,我正在考虑多表单验证解决方案
var validator = $('#create_hotels').validate(JSON.parse(code_string));
const isValid = {
    name: str => str.length > 3,
    age: int => {
        const MIN_AGE = 18;
        const MAX_AGE = 65;
        if(isNaN(int)){
            return false;
        }
        return age >= MIN_AGE && age <= MAX_AGE;
    }
}

const john = { name: 'John', age: 21 };
const sarah = { name: '', age: 99 };

isValid['name'](john.name); // true
isValid['age'](john.age); // true

isValid['name'](sarah.name); // false
isValid['age'](sarah.age); // false

code_string = '{"rules":{"hotel_name":{"required": true, "lettersonly": true}}}';

var validator = $('#create_hotels').validate({
    print JSON.parse(code_string);
});