如何在html中创建两行文本框-占位符保持不变
我想创建一个文本框,就像附加在HTML、JS中的图像一样。请分享一些想法 在图像中,您可以看到3个案例 顶级成功案例 中间-电话号码为空时的默认值文本框显示占位符电话号码 当用户输入电话号码时,底部的Place holder显示在顶部 我举了一个例子,可以帮助你理解你提出的这个问题 HTML如何在html中创建两行文本框-占位符保持不变,html,Html,我想创建一个文本框,就像附加在HTML、JS中的图像一样。请分享一些想法 在图像中,您可以看到3个案例 顶级成功案例 中间-电话号码为空时的默认值文本框显示占位符电话号码 当用户输入电话号码时,底部的Place holder显示在顶部 我举了一个例子,可以帮助你理解你提出的这个问题 HTML <body ng-app> <label for="pN">Phone number:</label> <input id="pN" type="text"
<body ng-app>
<label for="pN">Phone number:</label>
<input id="pN" type="text" value="1-800-CALL-MOM"></input>
<div style="height: 10px; border-bottom: 1px dotted silver;margin-bottom: 10px;"></div>
<div class="wrapper">PhoneNumberToDisplay: <div id="out1"></div></div>
<div class="wrapper">Letters Converted: <div id="out2"></div></div>
<div class="wrapper">PhoneNumberToDial: <div id="out3"></div></div>
<div id="out4"></div>
<div id="out3"></div>
</body>
<h1>Phone field scrubbing utility</h1>
<ul>
<li>Enter any content (characters, puntuation, etc.)</li>
<li>As long as there are 10 digits it will validate true</li>
<li>Providing the first digit is not 0 or 1</li>
<li>And providing there is not 1 digit repeated 10 times</li>
<li>The "format it" button will do just that</li>
<li>The "submit it" button will strip out everything but digits</li>
</ul>
<input class="phone" id="phone1" value="XXXXXXXXXX"><br>
<input class="phone" id="phone1" value="XXXXXXXXXX"><br>
<input class="phone" id="phone1" value="XXXXXXXXXX"><br>
<input type="button" id="format" value="format it">
<input type="button" id="submit" value="submit it">
<textarea class='autoExpand' rows='3' data-min-rows='3' placeholder='Auto-Expanding Textarea'></textarea>
<textarea class='autoExpand' rows='3' data-min-rows='3' placeholder='Auto-Expanding Textarea'></textarea>
<textarea class='autoExpand' rows='3' data-min-rows='3' placeholder='Auto-Expanding Textarea'></textarea>
JavaScript
var phoneLetterToDigit = ['2','2','2','3','3','3','4','4','4','5','5','5','6','6','6','7','7','7','7','8','8','8','9','9','9','9'];
var raw = '';
var digitsReplaced = '';
var numbersOnly = '';
$('#pN').keyup(function () {
update();
});
function update() {
raw = $("#pN").val();
digitsReplaced = '';
$.each(raw.split(''), function(a,b) {
var l = b.toUpperCase().charCodeAt(0) - 65;
if (l >= 0 && l <= 25) {
digitsReplaced += phoneLetterToDigit[l];
}
else {
digitsReplaced += b;
}
});
numbersOnly = digitsReplaced.replace(/[^0-9.]/g,'');
$("#out1").html(raw);
$("#out2").html(digitsReplaced);
$("#out3").html(numbersOnly);
}
update();
$(function(){
$('#phone1').phoneScrubber({
focusClass: 'on',
goodClass: 'goodClass',
badClass: 'badClass',
testOnKeyup: true
});
$.fn.phoneScrubber.formatAll();
$('#format').click(function(){
$.fn.phoneScrubber.formatAll();
});
$('#submit').click(function(){
if($.fn.phoneScrubber.validateAll()){
$.fn.phoneScrubber.submitAll();
}
});
});
(function($) {
$.fn.phoneScrubber = function(opts) {
var
obj = this,
defaults = {
phoneCleaner : /\D/g
, repeated : /(.)\1{9,}/g
, minLen : 10
, omit : [0, 1]
, format : '() -'
, focusClass : null
, testOnKeyup : true
, goodClass : null
, badClass : null
, formatOnBlur : false
}, settings = $.extend({}, defaults, opts)
, testStr
, aFormat = settings.format.split('')
, pre1 = aFormat[0]
, pre2 = aFormat[1] + aFormat[2]
, sep = aFormat[3]
, message = ''
, part1 = ''
, part2 = ''
, part3 = ''
, returnVal = ''
, setVal
, test
, cleanIt
, formatNumber
, cleanNumber
, errCount = 0
, errs = []
;
return this.each(function() {
test = function(dirty) {
var test = dirty.replace(settings.phoneCleaner,'')
, testLen = test.length
, startChar = parseInt(test.substring(0,1))
, testStr = test.substring(0,10)
if(testLen < settings.minLen){
// message = 'invalid length: '+testLen;
// alert(message);
return false;
}
if(settings.omit.indexOf(startChar)!==-1){
// message = 'First character cannot be '+startChar;
// alert(message);
return false;
}
if(testStr.match(settings.repeated)){
// message = "Nice try... repeated characters";
// alert(message);
return false;
}
return true;
}
cleanIt = function(dirty){
return dirty.replace(settings.phoneCleaner,'');
}
$.fn.phoneScrubber.formatNumber = function(dirty) {
var clean = cleanIt(dirty);
clean = clean.substring(0, settings.minLen)
part1 = clean.substring(0,3);
part2 = clean.substring(3,6);
part3 = clean.substring(6,10);
returnVal = pre1+part1+pre2+part2+sep+part3;
return returnVal;
}
$.fn.phoneScrubber.cleanNumber = function(dirty) {
var clean = cleanIt(dirty);
clean = clean.substring(0, settings.minLen)
return clean;
}
$.fn.phoneScrubber.formatAll = function(){
obj.each(function(){
var $this = $(this);
if(test($this.val())){
$this.val($.fn.phoneScrubber.formatNumber($this.val()));
}
});
}
$.fn.phoneScrubber.validateAll = function(){
var returnVal = true;
errs = [];
obj.each(function(){
if (test($(this).val())==false){
returnVal = false;
errs.push(this);
}
});
return returnVal;
}
$.fn.phoneScrubber.getErrFields = function(){
return errs;
}
$.fn.phoneScrubber.submitAll = function(){
obj.each(function(){
var $this = $(this);
if(test($this.val())){
$this.val($.fn.phoneScrubber.cleanNumber($this.val()));
}
});
}
obj.focus(function() {
$(this).addClass(settings.focusClass);
})
.keyup(function() {
var $this = $(this);
if(settings.testOnKeyup){
if(test($this.val())){
// good
$this
.removeClass(settings.badClass)
.addClass(settings.goodClass);
}else{
// bad
$this
.removeClass(settings.goodClass)
.addClass(settings.badClass);
}
}
})
.blur(function() {
var $this = $(this);
$this.removeClass(settings.focusClass);
if(test($this.val())){
if(settings.formatOnBlur){
$this.val(formatNumber($this.val()));
}
}
});
});
}
})(jQuery);
$(document)
.one('focus.textarea', '.autoExpand', function(){
var savedValue = this.value;
this.value = '';
this.baseScrollHeight = this.scrollHeight;
this.value = savedValue;
})
.on('input.textarea', '.autoExpand', function(){
var minRows = this.getAttribute('data-min-rows')|0,
rows;
this.rows = minRows;
console.log(this.scrollHeight , this.baseScrollHeight);
rows = Math.ceil((this.scrollHeight - this.baseScrollHeight) / 17);
this.rows = minRows + rows;
});
var phoneLetterToDigit=[2'、'2'、'2'、'3'、'3'、'4'、'4'、'5'、'5'、'6'、'6'、'7'、'7'、'8'、'8'、'9'、'9'、'9'、'9';
var原始值=“”;
var digitsReplaced='';
var numbersOnly='';
$('#pN').keyup(函数(){
更新();
});
函数更新(){
原始=$(“#pN”).val();
数字替换=“”;
$.each(原始分割(“”),函数(a,b){
var l=b.toUpperCase().charCodeAt(0)-65;
如果(l>=0&&l可以,则需要JQuery来实现这一点
var placeholder='这是一行\n这应该是新行';
$('textarea').attr('value',占位符);
$('textarea').focus(函数(){
if($(this).val()==占位符){
$(this.attr('value','');
}
});
$('textarea').blur(函数(){
if($(this.val()=''){
$(this.attr('value',占位符);
}
});
textarea{
宽度:300px;
高度:100px;
颜色:灰色;
}
示例2
我想再次尝试用另一个代码示例来帮助您
HTML
<body ng-app>
<label for="pN">Phone number:</label>
<input id="pN" type="text" value="1-800-CALL-MOM"></input>
<div style="height: 10px; border-bottom: 1px dotted silver;margin-bottom: 10px;"></div>
<div class="wrapper">PhoneNumberToDisplay: <div id="out1"></div></div>
<div class="wrapper">Letters Converted: <div id="out2"></div></div>
<div class="wrapper">PhoneNumberToDial: <div id="out3"></div></div>
<div id="out4"></div>
<div id="out3"></div>
</body>
<h1>Phone field scrubbing utility</h1>
<ul>
<li>Enter any content (characters, puntuation, etc.)</li>
<li>As long as there are 10 digits it will validate true</li>
<li>Providing the first digit is not 0 or 1</li>
<li>And providing there is not 1 digit repeated 10 times</li>
<li>The "format it" button will do just that</li>
<li>The "submit it" button will strip out everything but digits</li>
</ul>
<input class="phone" id="phone1" value="XXXXXXXXXX"><br>
<input class="phone" id="phone1" value="XXXXXXXXXX"><br>
<input class="phone" id="phone1" value="XXXXXXXXXX"><br>
<input type="button" id="format" value="format it">
<input type="button" id="submit" value="submit it">
<textarea class='autoExpand' rows='3' data-min-rows='3' placeholder='Auto-Expanding Textarea'></textarea>
<textarea class='autoExpand' rows='3' data-min-rows='3' placeholder='Auto-Expanding Textarea'></textarea>
<textarea class='autoExpand' rows='3' data-min-rows='3' placeholder='Auto-Expanding Textarea'></textarea>
JavaScript
var phoneLetterToDigit = ['2','2','2','3','3','3','4','4','4','5','5','5','6','6','6','7','7','7','7','8','8','8','9','9','9','9'];
var raw = '';
var digitsReplaced = '';
var numbersOnly = '';
$('#pN').keyup(function () {
update();
});
function update() {
raw = $("#pN").val();
digitsReplaced = '';
$.each(raw.split(''), function(a,b) {
var l = b.toUpperCase().charCodeAt(0) - 65;
if (l >= 0 && l <= 25) {
digitsReplaced += phoneLetterToDigit[l];
}
else {
digitsReplaced += b;
}
});
numbersOnly = digitsReplaced.replace(/[^0-9.]/g,'');
$("#out1").html(raw);
$("#out2").html(digitsReplaced);
$("#out3").html(numbersOnly);
}
update();
$(function(){
$('#phone1').phoneScrubber({
focusClass: 'on',
goodClass: 'goodClass',
badClass: 'badClass',
testOnKeyup: true
});
$.fn.phoneScrubber.formatAll();
$('#format').click(function(){
$.fn.phoneScrubber.formatAll();
});
$('#submit').click(function(){
if($.fn.phoneScrubber.validateAll()){
$.fn.phoneScrubber.submitAll();
}
});
});
(function($) {
$.fn.phoneScrubber = function(opts) {
var
obj = this,
defaults = {
phoneCleaner : /\D/g
, repeated : /(.)\1{9,}/g
, minLen : 10
, omit : [0, 1]
, format : '() -'
, focusClass : null
, testOnKeyup : true
, goodClass : null
, badClass : null
, formatOnBlur : false
}, settings = $.extend({}, defaults, opts)
, testStr
, aFormat = settings.format.split('')
, pre1 = aFormat[0]
, pre2 = aFormat[1] + aFormat[2]
, sep = aFormat[3]
, message = ''
, part1 = ''
, part2 = ''
, part3 = ''
, returnVal = ''
, setVal
, test
, cleanIt
, formatNumber
, cleanNumber
, errCount = 0
, errs = []
;
return this.each(function() {
test = function(dirty) {
var test = dirty.replace(settings.phoneCleaner,'')
, testLen = test.length
, startChar = parseInt(test.substring(0,1))
, testStr = test.substring(0,10)
if(testLen < settings.minLen){
// message = 'invalid length: '+testLen;
// alert(message);
return false;
}
if(settings.omit.indexOf(startChar)!==-1){
// message = 'First character cannot be '+startChar;
// alert(message);
return false;
}
if(testStr.match(settings.repeated)){
// message = "Nice try... repeated characters";
// alert(message);
return false;
}
return true;
}
cleanIt = function(dirty){
return dirty.replace(settings.phoneCleaner,'');
}
$.fn.phoneScrubber.formatNumber = function(dirty) {
var clean = cleanIt(dirty);
clean = clean.substring(0, settings.minLen)
part1 = clean.substring(0,3);
part2 = clean.substring(3,6);
part3 = clean.substring(6,10);
returnVal = pre1+part1+pre2+part2+sep+part3;
return returnVal;
}
$.fn.phoneScrubber.cleanNumber = function(dirty) {
var clean = cleanIt(dirty);
clean = clean.substring(0, settings.minLen)
return clean;
}
$.fn.phoneScrubber.formatAll = function(){
obj.each(function(){
var $this = $(this);
if(test($this.val())){
$this.val($.fn.phoneScrubber.formatNumber($this.val()));
}
});
}
$.fn.phoneScrubber.validateAll = function(){
var returnVal = true;
errs = [];
obj.each(function(){
if (test($(this).val())==false){
returnVal = false;
errs.push(this);
}
});
return returnVal;
}
$.fn.phoneScrubber.getErrFields = function(){
return errs;
}
$.fn.phoneScrubber.submitAll = function(){
obj.each(function(){
var $this = $(this);
if(test($this.val())){
$this.val($.fn.phoneScrubber.cleanNumber($this.val()));
}
});
}
obj.focus(function() {
$(this).addClass(settings.focusClass);
})
.keyup(function() {
var $this = $(this);
if(settings.testOnKeyup){
if(test($this.val())){
// good
$this
.removeClass(settings.badClass)
.addClass(settings.goodClass);
}else{
// bad
$this
.removeClass(settings.goodClass)
.addClass(settings.badClass);
}
}
})
.blur(function() {
var $this = $(this);
$this.removeClass(settings.focusClass);
if(test($this.val())){
if(settings.formatOnBlur){
$this.val(formatNumber($this.val()));
}
}
});
});
}
})(jQuery);
$(document)
.one('focus.textarea', '.autoExpand', function(){
var savedValue = this.value;
this.value = '';
this.baseScrollHeight = this.scrollHeight;
this.value = savedValue;
})
.on('input.textarea', '.autoExpand', function(){
var minRows = this.getAttribute('data-min-rows')|0,
rows;
this.rows = minRows;
console.log(this.scrollHeight , this.baseScrollHeight);
rows = Math.ceil((this.scrollHeight - this.baseScrollHeight) / 17);
this.rows = minRows + rows;
});
$(函数(){
$('#phone1')。电话洗涤器({
焦点类:“on”,
goodClass:“goodClass”,
badClass:“badClass”,
testOnKeyup:正确
});
$.fn.PhoneScriber.formatAll();
$(“#格式”)。单击(函数(){
$.fn.PhoneScriber.formatAll();
});
$(“#提交”)。单击(函数(){
if($.fn.phonescriber.validateAll()){
$.fn.phonescruber.submitAll();
}
});
});
(函数($){
$.fn.PhoneScriber=函数(选项){
变量
obj=这个,
默认值={
电话清洁器:/\D/g
,重复:/()\1{9,}/g
,minLen:10
,省略:[0,1]
,格式:“()-”
,focusClass:null
,testOnKeyup:true
,goodClass:null
,badClass:null
,formatOnBlur:false
},设置=$.extend({},默认值,选项)
,testStr
,aFormat=settings.format.split(“”)
,pre1=a格式[0]
,pre2=a格式[1]+a格式[2]
,sep=a格式[3]
,消息=“”
,第1部分=“”
,第2部分=“”
,第三部分=“”
,returnVal=''
,setVal
,测试
,清洁
,格式编号
,清洁编号
,errCount=0
,errs=[]
;
返回此值。每个(函数(){
测试=功能(脏){
var test=dirty.replace(settings.phoneCleaner“”)
,testLen=test.length
,startChar=parseInt(test.substring(0,1))
,testStr=test.substring(0,10)
if(testLen