jquery - 相对于文本框定位元素

标签 jquery css asp.net-mvc-3

我正在处理这个 asp.net mvc 3 View ,我在其中使用自定义 jQuery 日历让用户选择日期进行搜索。问题是我无法完全按照我想要的方式显示日历。我对 CSS 有非常基本的了解,但是日历是绝对位置的,所以据我所知,我需要一个父元素来定位。所以我决定为我的下拉菜单和文本框使用表格,所有这些都是不同的搜索选项。我试过的一件事是:

@using (Html.BeginForm())
{
    var dateID = "jc_dateBefore";
    var calParent = "jcalendar_parentBefore";
    <table>
    <tr>
        <td>
            @Html.DropDownList("kkcId", (SelectList)ViewBag.KKCNames, "Изберете ККС", new { @class = "validateClassKKCType" })
        </td>
        <td>
            @Html.DropDownList("UserId", (SelectList)ViewBag.UserNames, "Изберете Потребител", new { @class = "validateClassKKCType" })   
        </td>
        <td>
            @Html.TextBox("selDate", "Изберете Дата", new { @id = dateID, @class = dateID })
        </td>
        <td>
            <img onclick="viewCalendar('@calParent', '@dateID')"  style="margin-top: 5px;" width="20" height="20" src="../../Content/redmond/images/calendar-32x32.png" alt="CAL" border="0"/>
            <div id="@calParent" class="jcalendar_parent" style="z-index: 999"></div>
        </td>
        <td>
            @Html.DropDownList("statusId", (SelectList)ViewBag.Status, "Изберете Статус", new { @class = "validateClassKKCType" })
        </td>
        <td>
            <input type="submit" value="Search" />
        </td>
    </tr>
    </table>
}

我粘贴了整个代码,尽管我几乎可以肯定这是纯 CSS 问题,与此处使用的其他技术无关。所以特定于日历的代码是这个片段:

<td>
            @Html.TextBox("selDate", "Изберете Дата", new { @id = dateID, @class = dateID })
        </td>
        <td>
            <img onclick="viewCalendar('@calParent', '@dateID')"  style="margin-top: 5px;" width="20" height="20" src="../../Content/redmond/images/calendar-32x32.png" alt="CAL" border="0"/>
            <div id="@calParent" class="jcalendar_parent" style="z-index: 999"></div>
        </td>

当我使用上面的方法时,我得到了这个结果:

Calendar

当我需要它位于左侧文本框下方时,日历位于右侧下拉列表下方,如果用户选择日历,它实际上是显示日期的位置。

如果我像这样更改代码段的代码:

<td>
            @Html.TextBox("selDate", "Изберете Дата", new { @id = dateID, @class = dateID })
            <img onclick="viewCalendar('@calParent', '@dateID')"  style="margin-top: 5px;" width="20" height="20" src="../../Content/redmond/images/calendar-32x32.png" alt="CAL" border="0"/>
            <div id="@calParent" class="jcalendar_parent" style="z-index: 999"></div>
        </td>

将一切合而为一<td>元素然后我得到这个:

Calendar 2

这几乎是我想要的,但正如您所看到的,文本框略低于其他元素。如果我从 <img> 中删除边距标记然后文本框回到原位,但日历图像失去正确的位置。

这是日历的 CSS:

.jcalendar_parent{
    z-index: 999;
    position: absolute;
}

关于如何正确显示我的元素的任何想法?另外,我正在使用表格,因为这是我唯一能想到的,但根本不必使用它。如果有更好的方法,请提出。

附言

我不认为这是一个解决方案,但这是目前看来可行的方法:

 <td>
            @Html.TextBox("selDate", "Изберете Дата", new { @id = dateID, @class = dateID })
            <div id="@calParent" class="jcalendar_parent" style="z-index: 999;"></div>
        </td>
        <td>
            <img onclick="viewCalendar('@calParent', '@dateID')"  style="margin-top: 5px;" width="20" height="20" src="../../Content/redmond/images/calendar-32x32.png" alt="CAL" border="0"/>
        </td>

像这样将元素放在表格中我得到了这个:

calendar wa

这是在浏览器上为日历呈现的 HTML:

<td>
            <input class="jc_dateBefore" id="jc_dateBefore" name="selDate" type="text" value="Изберете Дата" />
            <div id="jcalendar_parentBefore" class="jcalendar_parent" style="z-index: 999;"></div>
        </td>
        <td>
            <img onclick="viewCalendar('jcalendar_parentBefore', 'jc_dateBefore')"  style="margin-top: 5px;" width="20" height="20" src="../../Content/redmond/images/calendar-32x32.png" alt="CAL" border="0"/>
        </td>

最佳答案

例子

这是一个 similar example

输入间距

生成日历的 Javascript 可能引入了一个将输入框向下推并导致出现空格的元素,或者您遇到了垂直对齐问题:

Calendar 2

日历定位

在 CSS 中,如果使用 position: relative; 定位对象或 position: absolute;然后它将根据最接近的 position 定位。编辑家长。

你的 <td> ,日历的父元素,应设置为 position: relative;

.parent { position: relative; }

然后您可以控制日历的位置:

.jcalendar {
  top: 10px;
  left: 0;
}

请注意:.jcalendar只是一个示例类。我不确定您使用的是哪种 javascript 日历实现,因此请检查您应该定位的类名(使用浏览器检查器)。

关于jquery - 相对于文本框定位元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16767938/

相关文章:

javascript - 无法将数据从 JavaScript 传递到 PHP 文件

javascript - 在 jQuery 中转义姓氏中的单引号

html - 如何在 CSS3 中仅对 2 的背景进行动画处理?

css - 如何在不同的 React 组件之间重用 styled-components?

c# - "The operation cannot be completed because the DbContext has been disposed"禁用延迟加载的异常

javascript - 将变量传递给对象方法javascript

jquery - 如何在 jQuery 中检测当前元素 id?

javascript - 返回顶部按钮和页脚(定位)

asp.net-mvc-3 - MVC3 输入提交

c# - 无法找到请求的.Net Framework 数据提供程序