javascript - 如何根据 javascript 或 CSS 中的内容使禁用的输入框变大

标签 javascript css input

你好,我有一个像 google translate 这样的翻译网络应用程序,有人在英文框中输入一个词,然后在另一个框中翻译它,但是如果他们在框中写了一个很长的词来翻译这个词,那么你需要滚动它我希望有人能帮忙

这是我的代码

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script
  src="https://code.jquery.com/jquery-3.3.1.min.js"
  integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
  crossorigin="anonymous"></script>
 <script src='https://code.responsivevoice.org/responsivevoice.js'></script>
<style>
    html {
  box-sizing: border-box;
}

*,
*:before,
*:after {
  box-sizing: inherit;
}

#input_lang {
    height: 184px;
    width: auto;
    font-size: 32px;
 
}


#output_lang {
    height: 184px;
    /*width: 256px;*/
    overflow-x: scroll;
    white-space: nowrap;
    font-size: 32px;
    width: auto;

}

[type="text"] {
  font: inherit;
  padding: 1em 1em;
  border: 1px solid #eee;
  border-radius: 3px;
  outline: none;
}

:disabled {
  background-color: #fff;
}

.wrapper {
  background:none;
  width: 860px;
  margin: 0 auto;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  text-align: center;
}

a {
  color: inherit;
  text-decoration: none;
  outline: none;
}

#output_lang {
  color: #7f8c8d;
}

.hello__word {
  font-size: 13px;
  margin-top: 3em;
  color: #000;
}
.warning {
  margin-top: 2em;
}

.warning, .description {
  font-size: 13px;
  color: #ddd;
}

.warning {
  min-height: 30px;
  color: #212121;
}

.love {
  color: #e74c3c;
}

.trnsl {
    font-size: 52px;
}

.englishLang {
    font-weight: bold;
    color: #ccc;
    position: absolute;
    margin-top: 19px;
    margin-left: 38%;
}

.maoriLang {
    font-weight: bold;
    color: #ccc;
    position: absolute;
    margin-top: 108px;
    margin-left: 73%;
}
</style>
<script>
     $('#output_lang').keypress(function() {
        var txtWidth = $(this).width();
        var cs = $(this).val().length;
    
        if(cs>17){
           $(this).width(txtWidth+5);
        }
    });
</script>
<div class="output_input_wrapper"></div><p class="englishLang">English</p><input type="text" id="input_lang" placeholder="type a sentence in">
  <a href="#" class="trnsl">→</a>
  <input type="text" id="output_lang" disabled></div><p class="maoriLang">Maori <i onclick='responsiveVoice.lang = "mi"; responsiveVoice.speak($("#output_lang").val());' class="fas fa-microphone"></i></p></div>
  <!--<div class="warning"></div>-->
  
 <script>
     $('#input_lang').focus();

$('.trnsl').click(function(e) { // keypress()
  var input_lang = $('#input_lang').val().trim();
  e.preventDefault();
  var params = {
    'key': 'trnsl.1.1.20160812T144209Z.b92c44a2b3973f9e.2cbac18d23ff1aa107e58b09a0a58d0b70151193',
    'text': input_lang,
    'lang': 'mi', // output lang
  }
  $('.warning').empty();
  $.ajax({
    url: 'https://translate.yandex.net/api/v1.5/tr.json/translate?' + $.param(params),
    dataType: 'jsonp',
    success: function(json) {
      if (json.code == '501' || !(input_lang) || (+(input_lang))) {
        $('.warning').html('The specified translation direction is not supported or it\'s number').delay(2000).fadeOut(500, function() {
          $(this).html('').css('display', 'block')
        });;
      } else if (json.code == '200') {
        $('#output_lang').val(json.text);
      }
    }
  });
});
 </script>

谢谢,

阿纳夫

最佳答案

我会使用 textarea 作为输入,使用 div 作为输出。文本输入是单行的。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script
  src="https://code.jquery.com/jquery-3.3.1.min.js"
  integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
  crossorigin="anonymous"></script>
 <script src='https://code.responsivevoice.org/responsivevoice.js'></script>

<script>
     $('#output_lang').keypress(function() {
        var txtWidth = $(this).width();
        var cs = $(this).val().length;
    
        if(cs>17){
           $(this).width(txtWidth+5);
        }
    });
</script>
<div class="output_input_wrapper"></div><p class="englishLang">English</p><textarea type="text" id="input_lang" placeholder="type a sentence in">
</textarea>
  <a href="#" class="trnsl">→</a>
  <div id="output_lang"></div><p class="maoriLang">Maori <i onclick='responsiveVoice.lang = "mi"; responsiveVoice.speak($("#output_lang").val());' class="fas fa-microphone"></i></p></div>
  <!--<div class="warning"></div>-->
  
 <script>
     $('#input_lang').focus();

$('.trnsl').click(function(e) { // keypress()
  var input_lang = $('#input_lang').val().trim();
  e.preventDefault();
  var params = {
    'key': 'trnsl.1.1.20160812T144209Z.b92c44a2b3973f9e.2cbac18d23ff1aa107e58b09a0a58d0b70151193',
    'text': input_lang,
    'lang': 'mi', // output lang
  }
  $('.warning').empty();
  $.ajax({
    url: 'https://translate.yandex.net/api/v1.5/tr.json/translate?' + $.param(params),
    dataType: 'jsonp',
    success: function(json) {
      if (json.code == '501' || !(input_lang) || (+(input_lang))) {
        $('.warning').html('The specified translation direction is not supported or it\'s number').delay(2000).fadeOut(500, function() {
          $(this).html('').css('display', 'block')
        });;
      } else if (json.code == '200') {
        $('#output_lang').html(json.text);
      }
    }
  });
});
 </script>

关于javascript - 如何根据 javascript 或 CSS 中的内容使禁用的输入框变大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51119312/

相关文章:

jquery - CSS3 PIE.js,用于多个元素

css - 任何人都可以检查我的下拉菜单的 css 代码,不能将导航菜单居中吗?

java - 如何在 java swing 中为我的程序添加整数输入?

javascript - 错误 : [$injector:unpr] Unknown provider: ngCsvProvider <- ngCsv <- dynamicDemoController

css - 文本 CSS 渲染性能 : RGBA vs HEX vs OPACITY

javascript - 在多种条件下过滤对象数组

java - 如何在 Mac 上的终端中获取 java 程序的控制台输入?

jquery - 检查是否有任何输入元素处于焦点

javascript - 如何使用 Javascript 禁用和启用 HTML 表格?

javascript - 使用 ocLazyLoad 加载的脚本是否会被浏览器缓存?