嗨,我快要撞到墙上了。
我正在尝试创建一个 javascript/jquery 事件来检测我的鼠标何时位于按钮上。当鼠标悬停在按钮上时,我想要一个工具提示,其中包含仍需要填写的输入中所需的消息。我希望它只是最后一条必需的消息,并且我希望消息能够更改,直到不再需要填写为止。
这是我到目前为止所尝试过的。
我的 Razor cshtml
...Irrelevant html code
<div class="form-group form-group-sm col-sm-6">
<div class="row">
<div class="col-sm-1"></div>
<div class="col-sm-4">
@Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "col-form-label col-md-12" })
</div>
<div class="col-sm-6">
@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control",title = Global.ToolTipName, data_toggle = "tooltip" } })
@Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
</div>
</div>
</div>
<div class="form-group form-group-sm col-sm-6">
<div class="row">
<div class="col-sm-1"></div>
<div class="col-sm-4">
@Html.LabelFor(model => model.Phone, htmlAttributes: new { @class = "col-form-label col-md-12" })
</div>
<div class="col-sm-6">
@Html.EditorFor(model => model.Phone, new { htmlAttributes = new { @class = "form-control", title = Global.ToolTipPhone, data_toggle = "tooltip" } })
@Html.ValidationMessageFor(model => model.Phone, "", new { @class = "text-danger" })
</div>
</div>
</div>
<div class="form-group form-group-sm col-sm-12">
<div class="row">
<div class="col-sm-12">
<input id="Send" type="submit" value="@Global.btnSend" title = "Not Implemented Yet!" data_toggle = "tooltip" class="btn btn-default" />
</div>
</div>
</div>
...Irrelevant html code
我的脚本看起来像这样
<script type="text/javascript">
$(document).on('mouseenter', '#Send', function () {
var allinput = $('input[data-val-required]').get();
allinput.forEach(item => this.attr('data-original-title', item.title));//<--- tried this doesn't seem to work.
//allinput.forEach(item => this.attr('data-original-title', item.title).tooltip('fixTitle').tooltip('show')); <--- and tried this didn't work either
//allinput.forEach(item => this.attr('title', item.title).tooltip('fixTitle').tooltip('show'));<--- then I tried this didn't work either
$(this).tooltip('show');
});
$(document).on('mouseleave', '#Send', function () {
$(this).tooltip('hide');
});
</script>
所以我不知道我哪里出错了。指向正确方向的指针或在这里提供一点帮助将不胜感激,甚至告诉我我是否远离我的目标或非常接近也将被视为一个很大的帮助。
在 CodeThing 的帮助下,我制作了一个我想做的工作示例。
$(document).on('mouseenter', '#Send', function () {
var allinput = $('input[data-val-required]').get();
var lastval = '';
$.each(allinput, function () {
if ($(this).val() == '') {
var forName = this.id;
var closestName = "label[for='" + forName + "']";
lastval += $(this.parentNode.parentNode).find(closestName).text() +", ";
}
});
lastval = "Need to fill out these fields: " + lastval
$(this).attr('title', lastval).tooltip('fixTitle').tooltip('show');
});
$(document).on('mouseleave', '#Send', function () {
$(this).tooltip('hide');
});
但是这仅适用于 Firefox。我真的需要这个也能在 Edge 和 Chrome 中工作。
最佳答案
在这种情况下,请尝试以下代码并向发送按钮添加 data-html="true"属性。它在发送按钮工具提示中的新行上显示所有空白字段工具提示。
$(document).on('mouseenter', '#Send', function () {
var allinput = $('input[data-val-required]').get();
var lastval = '';
$.each(allinput, function() {
if($(this).val() == '') lastval += $(this).attr('title')+'<br />';
});
$(this).attr('title', lastval).tooltip('fixTitle').tooltip('show');
});
$(document).on('mouseleave', '#Send', function () {
$(this).tooltip('hide');
});
关于javascript - Bootstrap Tooltip 动态值 取决于是否需要填写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52091615/