0

我对javascript比较陌生。下面的代码会阻止其他一些 javascript ( http://www.oesmith.co.uk/morris.js ) 在我的应用程序中运行。如果我删除下面的代码,莫里斯图表会正确呈现。下面的代码可以满足我的要求,但它会阻止图表显示。我在 Rails 中编程。任何想法我可能做错了什么以及如何解决它?

$(document).ready(function(){
var str = $("#rule_rule_type").val().toLowerCase();
if (str=="complex") {
    $("#id_ttl").hide();
    $("#id_condition_2").show();
    $("#id_value_2").show();
}
else if (str=="correlation") {
    $("#id_ttl").show();
    $("#id_condition_2").show();
    $("#id_value_2").show();
}
else if (str=="simple") {
    $("#id_ttl").hide();
    $("#id_condition_2").hide();
    $("#id_value_2").hide();
}

$("#rule_log_type").change(function () {
    logtype = $("#rule_log_type :selected").text();
        switch (logtype)
        {
            case "Syslog":
                $("#rule_severity")
                    .find('option')
                    .remove()
                    .end()
                    .append('<option value="Emergency">Emergency</option>')
                    .append('<option value="Alert">Alert</option>')
                    .append('<option value="Critical">Critical</option>')
                    .append('<option value="Error">Error</option>')
                    .append('<option value="Warning">Warning</option>')
                    .append('<option value="Notice">Notice</option>')
                    .append('<option value="Information">Information</option>')
                    .append('<option value="Debug">Debug</option>');
                $("#rule_condition_1")
                    .find('option')
                    .remove()
                    .end()
                    .append('<option value="Severity">Severity</option>');
                $("#id_condition_2").hide();
                $("#id_value_2").hide();
                break;
            case "Microsoft Windows":
                $("#rule_severity")
                    .find('option')
                    .remove()
                    .end()
                    .append('<option value="Critical">Critical</option>')
                    .append('<option value="Warning">Warning</option>')
                    .append('<option value="Information">Information</option>');
                $("#rule_condition_1")
                    .find('option')
                    .remove()
                    .end()
                    .append('<option value="Event ID">Event ID</option>')
                    .append('<option value="Instance ID">Instance ID</option>');
                $("#id_condition_2").show();
                $("#id_value_2").show();
                break;
        }
});

$("#rule_rule_type").change(function () {
    ruletype = $("#rule_rule_type :selected").text();
        switch (ruletype)
        {
            case "Complex":
                $("#id_ttl").hide();
                $("#id_condition_2").show();
                $("#id_value_2").show();
                break;
            case "Correlation":
                $("#id_ttl").show();
                $("#id_condition_2").show();
                $("#id_value_2").show();
                break;
            case "Simple":
                $("#id_ttl").hide();
                $("#id_condition_2").hide();
                $("#id_value_2").hide();
                break;
        }
});

});

4

2 回答 2

0

很可能$("#rule_rule_type")不在 DOM 中。

首先,确认您正在尝试定位正确的id属性,并且您没有拼错任何内容。然后,确保您使用正确的方法对 jQuery 对象进行操作。val()将返回 HTML 输入的当前值。html()将从打开-关闭 HTML 标记中检索 HTML。

于 2013-07-15T06:41:35.420 回答
0

我认为只是代码导致了错误。

尝试定义logtyperuletype

代替:

var str = $("#rule_rule_type").val().toLowerCase();

和:

var str = $("#rule_rule_type").val().toLowerCase(), 
    logtype, ruletype;
于 2013-07-15T05:31:24.477 回答