首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >下拉默认选择,导致搜索开始

下拉默认选择,导致搜索开始
EN

Stack Overflow用户
提问于 2011-12-15 14:51:49
回答 1查看 86关注 0票数 0

我们有一个具有多个文本框的搜索页面,用户可以通过这些文本框输入数据进行搜索。有可以输入日期范围的日期文本框。在选择要筛选的日期字段时,会有一个下拉列表。

默认情况下不启用日期范围文本框。只有在下拉列表中选择日期字段时,才能输入日期。默认的下拉选择是"“一个空白。

如果您选择一个日期字段,然后在下拉列表中更改为另一个日期字段,则一切正常。如果您在下拉列表中选择了一个datefield,然后切换回默认的“空”,它将触发搜索。我不希望这种事发生。我只希望搜索发生时,他们点击搜索按钮。

代码语言:javascript
运行
复制
  protected void ddlDateType_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ddlDateType.SelectedValue != "")
        {
            txtSearchEndDate.Enabled = true;
            txtSearchStartDate.Enabled = true;
        }

        else
        {
            txtSearchEndDate.Text = "";
            txtSearchStartDate.Text = "";
            txtSearchEndDate.Enabled = false;
            txtSearchStartDate.Enabled = false;
        }
    }

有人能告诉我,当有人切换到下拉列表中默认的"“选项时,如何阻止搜索的运行?

我注释掉了if的代码,并得到了相同的结果。选择除默认不启动搜索之外的任何内容,选择默认的"“搜索将被触发。

EN

回答 1

Stack Overflow用户

发布于 2011-12-15 18:00:50

我认为您最好将逻辑更改为在javascript中操作,这样就不必回发整个页面来启用或禁用控件。

我在下面添加了一些示例代码,您可以从客户端事件触发所选索引更改的事件,我认为这是onchange事件。您可以将此事件添加到代码隐藏中,如下所示:

ddlDateType.Attributes.Add("onchange","OnDateTypeChanged()");

此代码还将文本框的类更改为包含一个TextDisabled CSS类,以直观地指示禁用textbox,但这是可选的。

代码语言:javascript
运行
复制
function OnDateTypeChanged() {
    var ddList = document.getElementById("ddlDateType");
    var fReadOnly = true;
    if (ddList.selectedIndex >= 0)
    {
        fReadOnly = (ddList.options[ddList.selectedIndex] != '');
    }

    var oTextBox;

    oTextBox = document.getElementById("txtSearchEndDate");
    SetTextboxReadOnly(oTextBox, fReadOnly);
    if (fReadOnly) {
       oTextBox.value = '';
    }

    oTextBox = document.getElementById("txtSearchStartDate");
    SetTextboxReadOnly(oTextBox, fReadOnly);
    if (fReadOnly) {
       oTextBox.value = '';
    }
}

function SetTextboxReadOnly(oTextBox, fReadOnly) {
    /// <summary>This method sets or clears the readonly flag on an textbox. It also updates the class information to
    /// ensure that the control is displayed correctly to the user</summary>

    if (oTextBox) {
        oTextBox.readOnly = fReadOnly;
        oTextBox.className = UpdateClassForReadOnlyChange(fReadOnly, oTextBox.className);
    }
}

function UpdateClassForReadOnlyChange(fReadOnly, sClassName) {
    /// <summary>This is an internal method used to update a class based on the readonly flag</summary>

    if (fReadOnly) {
        return 'TextDisabled ' + sClassName;
    } else {
        return sClassName.replace(/TextDisabled /gi, '');
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8521942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档